test_storage_release_dual_gate.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. from app.crud.storage_release_review import (
  2. aggregate_review_conclusion,
  3. conclusion_blank,
  4. matches_dual_review_phase,
  5. normalize_review_side,
  6. review_side_required_menu,
  7. should_copy_legacy_to_qc,
  8. storage_transition,
  9. )
  10. def test_conclusion_blank():
  11. assert conclusion_blank(None) is True
  12. assert conclusion_blank("") is True
  13. assert conclusion_blank(" ") is True
  14. assert conclusion_blank("tg") is False
  15. assert conclusion_blank("btg") is False
  16. def test_aggregate_both_tg():
  17. assert aggregate_review_conclusion("tg", "tg") == "tg"
  18. def test_aggregate_any_btg():
  19. assert aggregate_review_conclusion("btg", "tg") == "btg"
  20. assert aggregate_review_conclusion("tg", "btg") == "btg"
  21. assert aggregate_review_conclusion("btg", None) == "btg"
  22. assert aggregate_review_conclusion("", "btg") == "btg"
  23. def test_aggregate_pending_when_not_aligned():
  24. assert aggregate_review_conclusion("tg", None) is None
  25. assert aggregate_review_conclusion(None, "tg") is None
  26. assert aggregate_review_conclusion(None, None) is None
  27. assert aggregate_review_conclusion("", "") is None
  28. def test_storage_transition_store_when_both_tg_and_pending():
  29. assert storage_transition("tg", "tg", "drk") == "store"
  30. def test_storage_transition_unstore_when_btg_and_stored():
  31. assert storage_transition("btg", "tg", "yrk") == "unstore"
  32. assert storage_transition("tg", "btg", "yrk") == "unstore"
  33. def test_storage_transition_noop_otherwise():
  34. assert storage_transition("tg", "tg", "yrk") == "noop"
  35. assert storage_transition("tg", None, "drk") == "noop"
  36. assert storage_transition("btg", "tg", "drk") == "noop"
  37. assert storage_transition(None, None, "yrk") == "noop"
  38. def test_matches_dual_review_phase_production():
  39. assert matches_dual_review_phase("production", "pending", None, "tg") is True
  40. assert matches_dual_review_phase("production", "pending", "tg", "tg") is False
  41. assert matches_dual_review_phase("production", "reviewed", "btg", None) is True
  42. assert matches_dual_review_phase("production", "reviewed", None, "tg") is False
  43. def test_matches_dual_review_phase_qc():
  44. assert matches_dual_review_phase("qc", "pending", "tg", None) is True
  45. assert matches_dual_review_phase("qc", "reviewed", "tg", "tg") is True
  46. assert matches_dual_review_phase("qc", "reviewed", "tg", None) is False
  47. def test_matches_dual_review_phase_overview():
  48. assert matches_dual_review_phase("overview", "pending", None, "tg") is True
  49. assert matches_dual_review_phase("overview", "pending", "tg", "tg") is False
  50. assert matches_dual_review_phase("overview", "reviewed", "tg", "btg") is True
  51. assert matches_dual_review_phase("overview", "reviewed", "tg", None) is False
  52. def test_should_copy_legacy_to_qc():
  53. assert should_copy_legacy_to_qc(None, "tg") is True
  54. assert should_copy_legacy_to_qc("", "btg") is True
  55. assert should_copy_legacy_to_qc("tg", "tg") is False
  56. assert should_copy_legacy_to_qc(None, None) is False
  57. assert should_copy_legacy_to_qc(None, "") is False
  58. def test_normalize_review_side():
  59. assert normalize_review_side("production") == "production"
  60. assert normalize_review_side(" QC ") == "qc"
  61. assert normalize_review_side("overview") == "overview"
  62. assert normalize_review_side("all") is None
  63. assert normalize_review_side(None) is None
  64. def test_review_side_required_menu():
  65. assert review_side_required_menu("production") == "production:storageReleaseReview:list"
  66. assert review_side_required_menu("qc") == "quality:storageReleaseReview:list"
  67. assert review_side_required_menu("overview") is None