"""Data seed runner tests (require PostgreSQL).""" from __future__ import annotations import uuid import run_seeds from tests.factories import create_user def test_seed_runner_finds_seeds(): seeds_dir = run_seeds.seeds_directory() names = [name for name, _, _ in run_seeds.seed_files(seeds_dir)] assert "seed_001_cleanup_pytest_artifacts" in names assert "seed_002_bootstrap_admin" in names def test_cleanup_seed_removes_example_com_users(): suffix = uuid.uuid4().hex[:8] user = create_user(email=f"seed-test-{suffix}@example.com") assert run_seeds.main(["--only", "seed_001_cleanup_pytest_artifacts", "--force"]) == 0 from db import get_connection conn = get_connection() try: with conn.cursor() as cur: cur.execute("SELECT COUNT(*) FROM users WHERE id = %s", (user["id"],)) assert cur.fetchone()[0] == 0 finally: conn.close() def test_cleanup_seed_is_idempotent(): assert run_seeds.main(["--only", "seed_001_cleanup_pytest_artifacts"]) == 0 assert run_seeds.main(["--only", "seed_001_cleanup_pytest_artifacts"]) == 0 def test_dev_admin_seed_ensures_lars(): import os if os.getenv("ENVIRONMENT", "development").strip().lower() == "production": return from auth import get_user_by_email, verify_password from services.dev_admin import DEV_ADMIN_EMAIL, DEV_ADMIN_PASSWORD assert run_seeds.main(["--only", "seed_003_ensure_dev_admin"]) == 0 user = get_user_by_email(DEV_ADMIN_EMAIL) assert user is not None assert user["portal_role"] == "admin" assert verify_password(DEV_ADMIN_PASSWORD, user["password_hash"])