test_seed_manifest.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from datetime import UTC, datetime
  2. from app.commands.seed import build_seed_manifest
  3. def test_seed_manifest_contains_fixed_accounts_products_versions_and_plans() -> None:
  4. manifest = build_seed_manifest()
  5. assert len(manifest.admin_users) == 9
  6. assert {user.username for user in manifest.admin_users} == {
  7. "admin",
  8. "operator01",
  9. "reviewer01",
  10. "sales_a",
  11. "sales_b",
  12. "sales_c",
  13. "sales_d",
  14. "sales_e",
  15. "sales_f",
  16. }
  17. assert len(manifest.products) == 4
  18. assert {item.code for item in manifest.promotion_codes} == {
  19. "ZBT-SALES-A",
  20. "ZBT-SALES-B",
  21. "ZBT-SALES-C",
  22. "ZBT-SALES-D",
  23. "ZBT-SALES-E",
  24. "ZBT-SALES-F",
  25. }
  26. assert len(manifest.versions) == 7
  27. assert sum(len(version.plans) for version in manifest.versions) == 10
  28. when = datetime(2026, 1, 1, tzinfo=UTC)
  29. available = {
  30. (product.product_code, version.version_no)
  31. for product in manifest.products
  32. for version in manifest.versions
  33. if version.product_id == product.id and version.is_available_at(when)
  34. }
  35. assert available == {
  36. ("MED-BASIC", "2.0.0"),
  37. ("MED-UPGRADE", "1.0.0"),
  38. ("MED-SENIOR", "1.0.0"),
  39. ("ACC-FAMILY", "1.0.0"),
  40. }