"""Structural tests for the trash blueprint + delete-flip contracts.""" import inspect def test_trash_blueprint_registered(): from scribe.routes.trash import trash_bp assert trash_bp.name == "trash" assert trash_bp.url_prefix == "/api/trash" def test_trash_blueprint_registered_in_app(): from scribe.app import create_app app = create_app() assert "trash" in app.blueprints def test_trash_handlers_callable(): from scribe.routes import trash as trash_routes for name in ("list_trash", "restore_batch", "purge_batch"): assert callable(getattr(trash_routes, name)) def test_trash_service_surface(): from scribe.services import trash as svc for fn_name in ("delete", "restore", "purge", "list_trash", "purge_expired", "alive"): assert hasattr(svc, fn_name), f"trash service missing {fn_name}" def test_delete_service_signature(): from scribe.services.trash import delete params = inspect.signature(delete).parameters assert "user_id" in params and "entity_type" in params and "entity_id" in params