55 lines
2.0 KiB
Python
55 lines
2.0 KiB
Python
"""
|
|
Unit tests for `repair_split_submission` merge logic (no PostgreSQL required).
|
|
|
|
DB integration for the full repair is gated on INITIATIVE_DATABASE_URL (see test_applications_db_integration.py).
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from src.initiative_db.repair_split_submission import (
|
|
merge_payload_for_case_repair,
|
|
tabs_effectively_empty,
|
|
)
|
|
|
|
|
|
class RepairSplitSubmissionPureTests(unittest.TestCase):
|
|
def test_tabs_effectively_empty_true(self) -> None:
|
|
self.assertTrue(tabs_effectively_empty({}))
|
|
self.assertTrue(tabs_effectively_empty({"report": {}, "application": {}, "contribution": {}}))
|
|
self.assertTrue(tabs_effectively_empty(None))
|
|
|
|
def test_tabs_effectively_empty_false(self) -> None:
|
|
self.assertFalse(tabs_effectively_empty({"report": {"x": 1}}))
|
|
|
|
def test_merge_prefers_good_tabs(self) -> None:
|
|
good = {
|
|
"tabs": {"application": {"initiativeName": "A"}, "report": {}, "contribution": {}},
|
|
"caseId": "CASE-OLD",
|
|
}
|
|
bad = {
|
|
"tabs": {},
|
|
"submissionRecord": {"id": "sub-abc"},
|
|
"submissionFile": {"url": "/submitted-initiatives/x.pdf", "type": "pdf"},
|
|
}
|
|
m = merge_payload_for_case_repair(
|
|
target_case_code="CASE-OK",
|
|
good_payload=good,
|
|
bad_payload=bad,
|
|
)
|
|
self.assertEqual(m["caseId"], "CASE-OK")
|
|
self.assertEqual(m["submissionRecord"]["id"], "sub-abc")
|
|
self.assertEqual(m["submissionFile"]["url"], "/submitted-initiatives/x.pdf")
|
|
self.assertEqual(m["tabs"]["application"]["initiativeName"], "A")
|
|
|
|
def test_merge_falls_back_to_bad_tabs_when_good_empty(self) -> None:
|
|
good = {"tabs": {}, "caseId": "CASE-OK"}
|
|
bad = {"tabs": {"application": {"k": "v"}}, "submissionRecord": {"id": "sub-x"}}
|
|
m = merge_payload_for_case_repair(target_case_code="CASE-OK", good_payload=good, bad_payload=bad)
|
|
self.assertEqual(m["tabs"]["application"]["k"], "v")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|