"""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
