Files
sciagent/be0/tests/test_repair_split_submission.py
Thinh Lam 688fac73e9
CI/CD / backend (push) Failing after 2m8s
CI/CD / frontend (push) Failing after 1m40s
CI/CD / deploy (push) Has been skipped
sciagent code + Gitea Actions CI/CD
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 09:38:30 +07:00

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()