"""Cover / Mẫu 02 don_vi resolution for legacy officialBieuMau JSON. Run: cd be0 && python -m unittest tests.test_official_to_data_blank_don_vi -v """ from __future__ import annotations import unittest from src.be01.official_to_data_blank import _resolve_don_vi_cong_tac, official_to_data_blank class OfficialToDataBlankDonViTests(unittest.TestCase): def test_resolve_prefers_explicit_cover(self) -> None: official = { "TRANG BÌA": {"Đơn vị công tác": " Phòng A "}, "MẪU SỐ 02 - ĐƠN ĐỀ NGHỊ CÔNG NHẬN SÁNG KIẾN": { "Đơn vị": "", "Danh sách tác giả": [ {"STT": "1", "Họ và tên": "X", "Nơi công tác": "Phòng B"}, ], }, } self.assertEqual(_resolve_don_vi_cong_tac(official), "Phòng A") def test_resolve_falls_back_to_first_author_workplace(self) -> None: official = { "TRANG BÌA": {"Đơn vị công tác": ""}, "MẪU SỐ 02 - ĐƠN ĐỀ NGHỊ CÔNG NHẬN SÁNG KIẾN": { "Đơn vị": "", "Danh sách tác giả": [ { "STT": "1", "Họ và tên": "Nguyễn Văn A", "Nơi công tác": "Trường Y", }, ], }, } self.assertEqual(_resolve_don_vi_cong_tac(official), "Trường Y") def test_official_to_data_blank_sets_trang_bia_and_mau02(self) -> None: official = { "TRANG BÌA": { "Tên sáng kiến (Tiếng Việt)": "SK1", "Tác giả/nhóm tác giả sáng kiến": "A", "Đơn vị công tác": "", "Thông tin liên hệ (Điện thoại, Email)": "", "Năm": "2026", }, "MẪU SỐ 02 - ĐƠN ĐỀ NGHỊ CÔNG NHẬN SÁNG KIẾN": { "Đơn vị": "", "Danh sách tác giả": [ { "STT": "1", "Họ và tên": "A", "Ngày tháng năm sinh": "", "Nơi công tác": "Khoa X", "Chức danh": "", "Trình độ chuyên môn": "", "Tỷ lệ (%) đóng góp vào việc tạo ra sáng kiến": "100", }, ], }, } ctx = official_to_data_blank(official) self.assertEqual(ctx["trang_bia"]["don_vi"], "Khoa X") self.assertEqual(ctx["mau_02"]["don_vi"], "Khoa X") if __name__ == "__main__": unittest.main()