Hver test får sin egen engine (function-scoped) med friske
tabeller (drop_all + create_all). Appen får sin egen session
per request via dependency override — ingen deling af sessions.
admin_user/normal_user opretter data via egen session og
lukker den. client bruger async_sessionmaker i override_get_db.
Ingen _clean_db fixture, ingen outer transaction, ingen
SAVEPOINT — hver test starter blankt og engine.dispose()
rydder op.