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