48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
"""Unit tests for submit readiness validation (no database)."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from src.initiative_db.submission_readiness import (
|
|
ApplicationSubmissionNotReadyError,
|
|
collect_submission_readiness_gaps,
|
|
)
|
|
|
|
from tests.fixtures.minimal_submit_bundle import minimal_tabs_bundle
|
|
|
|
|
|
class SubmissionReadinessTests(unittest.TestCase):
|
|
def test_minimal_tabs_with_technical_evidence_ok(self) -> None:
|
|
tabs = minimal_tabs_bundle()
|
|
gaps = collect_submission_readiness_gaps(
|
|
tabs,
|
|
{"research": False, "textbook": False, "technical": True},
|
|
)
|
|
self.assertEqual(gaps, [])
|
|
|
|
def test_missing_evidence_fails(self) -> None:
|
|
tabs = minimal_tabs_bundle()
|
|
gaps = collect_submission_readiness_gaps(
|
|
tabs,
|
|
{"research": False, "textbook": False, "technical": False},
|
|
)
|
|
self.assertTrue(any("Nhóm 1" in g for g in gaps))
|
|
|
|
def test_missing_honesty_flags(self) -> None:
|
|
tabs = minimal_tabs_bundle()
|
|
tabs["report"]["honestyConfirmed"] = False
|
|
gaps = collect_submission_readiness_gaps(
|
|
tabs,
|
|
{"research": False, "textbook": False, "technical": True},
|
|
)
|
|
self.assertTrue(any("Báo cáo" in g and "cam kết" in g for g in gaps))
|
|
|
|
def test_exception_carries_missing(self) -> None:
|
|
exc = ApplicationSubmissionNotReadyError(["a", "b"])
|
|
self.assertEqual(exc.missing, ["a", "b"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|