import pytest
from load_one_data import dump_diff, dump_diff_text, one_dump_test

from ArWikiCats import resolve_arabic_category_label
from ArWikiCats.new_resolvers.nationalities_resolvers.ministers_resolver import resolve_secretaries_labels

new = {
    "Category:British Secretaries of State for the Environment": "تصنيف:وزراء خارجية بريطانيون في البيئة",
    "Category:British Secretaries of State for Education": "تصنيف:وزراء خارجية بريطانيون في التعليم",
    "Category:British Secretaries of State for Employment": "تصنيف:وزراء خارجية بريطانيون في التوظيف",
    "Category:British secretaries of state for Commonwealth affairs": "تصنيف:وزراء الدولة البريطانيون لشؤون الكومنولث",
    "Category:British secretaries of state for education": "تصنيف:وزراء الدولة للتعليم (المملكة المتحدة)",
    "Category:British secretaries of state for employment": "تصنيف:وزراء خارجية بريطانيون في التوظيف",
    "Category:British secretaries of state for foreign and Commonwealth affairs": "تصنيف:وزراء خارجية بريطانيا",
    "Category:British secretaries of state for the environment": "تصنيف:وزراء دولة بريطانيون لشؤون البيئة",
}

secretaries_test_2 = {
    "Category:United States Department of Energy national laboratories": "تصنيف:مختبرات وزارة الطاقة الأمريكية",
    "Category:United States Department of Education agencies": "تصنيف:وكالات وزارة التعليم الأمريكية",
    "Category:United States Department of Education officials": "تصنيف:مسؤولو وزارة التعليم الأمريكية",
    "Category:United States Department of Energy National Laboratories personnel": "تصنيف:موظفو مختبرات وزارة الطاقة الأمريكية",
    "Category:Ministries of education": "تصنيف:وزارات تعليم",
    "Category:Ministries of finance": "تصنيف:وزارات مالية",
    "Category:Ministries of health": "تصنيف:وزارات صحة",
    "Category:Ministries of justice": "تصنيف:وزارات عدل",
    # "Category:Ministries of the Government of Laos": "تصنيف:وزارات حكومة لاوس",
    "Category:Ministries of transport": "تصنيف:وزارات نقل",
    "Category:Secretaries of Guam": "تصنيف:وزراء غوام",
}

secretaries_test_0 = {
    "Category:Secretaries of transportation of Maryland": "تصنيف:وزراء نقل في ماريلند",
    "Category:Secretaries of veterans and military families of Maryland": "تصنيف:وزراء شؤون محاربين قدامى في ماريلند",
    "Category:Secretaries of education of Pennsylvania": "تصنيف:وزراء تعليم في بنسلفانيا",
    "Category:Secretaries of education of Oklahoma": "تصنيف:وزراء تعليم في أوكلاهوما",
    "Category:Secretaries of agriculture of Iowa": "تصنيف:وزراء زراعة في آيوا",
    "Category:Ministry of Commerce (Thailand)": "تصنيف:وزارة التجارة التايلندية",
    "Category:Ministry of Culture (Saudi Arabia)": "تصنيف:وزارة الثقافة السعودية",
    "Category:Ministry of Culture (Thailand)": "تصنيف:وزارة الثقافة التايلندية",
    "Category:Ministry of Defence (Jordan)": "تصنيف:وزارة الدفاع الأردنية",
    "Category:Ministry of Defence (Russia)": "تصنيف:وزارة الدفاع الروسية",
    "Category:Ministry of Defence (Thailand)": "تصنيف:وزارة الدفاع التايلندية",
    "Category:Ministry of Defence (Ukraine)": "تصنيف:وزارة الدفاع الأوكرانية",
    "Category:Ministry of Defence (United Kingdom)": "تصنيف:وزارة الدفاع البريطانية",
    "Category:Ministry of Defense (Israel)": "تصنيف:وزارة الدفاع الإسرائيلية",
    "Category:Ministry of Defense (Japan)": "تصنيف:وزارة الدفاع اليابانية",
    "Category:Ministry of Defense (Saudi Arabia)": "تصنيف:وزارة الدفاع السعودية",
    "Category:Ministry of Defense (Yemen)": "تصنيف:وزارة الدفاع اليمنية",
    "Category:Ministry of Agriculture and Cooperatives (Thailand)": "تصنيف:وزارة الزراعة والتعاونيات التايلندية",
    "Category:Ministry of Culture and Tourism (Turkey)": "تصنيف:وزارة الثقافة والسياحة التركية",
    "Category:Former Colombian Executive Council positions": "تصنيف:مناصب سابقة في المجلس التنفيذي الكولومبي",
    "Category:Colombian Executive Council": "تصنيف:المجلس التنفيذي الكولومبي",
    "Category:Colombian Executive Council positions": "تصنيف:مناصب في المجلس التنفيذي الكولومبي",
    "Category:United States under secretaries of agriculture": "تصنيف:نواب وزير الزراعة الأمريكي للشؤون المتخصصة",
    "Category:United States under secretaries of commerce": "تصنيف:نواب وزير التجارة الأمريكي للشؤون المتخصصة",
    "Category:United States under secretaries of defense": "تصنيف:نواب وزير الدفاع الأمريكي للشؤون المتخصصة",
    "Category:Secretaries of the state of Connecticut": "تصنيف:وزراء خارجية كونيتيكت",
    "Category:Secretaries of state of Alabama": "تصنيف:وزراء خارجية ألاباما",
    "Category:Secretaries of state of Arizona": "تصنيف:وزراء خارجية أريزونا",
    "Category:Secretaries of state of Arkansas": "تصنيف:وزراء خارجية أركنساس",
    "Category:Secretaries of state of California": "تصنيف:وزراء خارجية كاليفورنيا",
    "Category:Secretaries of state of Colorado": "تصنيف:وزراء خارجية كولورادو",
    "Category:Secretaries of state of Delaware": "تصنيف:وزراء خارجية ديلاوير",
    "Category:Secretaries of state of Florida": "تصنيف:وزراء خارجية فلوريدا",
    "Category:Secretaries of state of Georgia (U.S. state)": "تصنيف:وزراء خارجية ولاية جورجيا",
    "Category:Secretaries of state of Idaho": "تصنيف:وزراء خارجية أيداهو",
    "Category:Secretaries of state of Illinois": "تصنيف:وزراء خارجية إلينوي",
    "Category:Secretaries of state of Indiana": "تصنيف:وزراء خارجية إنديانا",
    "Category:Secretaries of state of Iowa": "تصنيف:وزراء خارجية آيوا",
    "Category:Secretaries of state of Kansas": "تصنيف:وزراء خارجية كانساس",
    "Category:Secretaries of state of Maine": "تصنيف:وزراء خارجية مين",
    "Category:Secretaries of state of Maryland": "تصنيف:وزراء خارجية ماريلند",
    "Category:Secretaries of state of Michigan": "تصنيف:وزراء خارجية ميشيغان",
    "Category:Secretaries of state of Minnesota": "تصنيف:وزراء خارجية منيسوتا",
    "Category:Secretaries of state of Mississippi": "تصنيف:وزراء خارجية مسيسيبي",
    "Category:Secretaries of state of Missouri": "تصنيف:وزراء خارجية ميزوري",
    "Category:Secretaries of state of Montana": "تصنيف:وزراء خارجية مونتانا",
    "Category:Secretaries of state of Nebraska": "تصنيف:وزراء خارجية نبراسكا",
    "Category:Secretaries of state of Nevada": "تصنيف:وزراء خارجية نيفادا",
    "Category:Secretaries of state of New Hampshire": "تصنيف:وزراء خارجية نيوهامشير",
    "Category:Secretaries of state of New Jersey": "تصنيف:وزراء خارجية نيوجيرسي",
    "Category:Secretaries of state of New York (state)": "تصنيف:وزراء خارجية ولاية نيويورك",
    "Category:Secretaries of state of North Carolina": "تصنيف:وزراء خارجية كارولاينا الشمالية",
    "Category:Secretaries of state of Ohio": "تصنيف:وزراء خارجية أوهايو",
    "Category:Secretaries of state of Oklahoma": "تصنيف:وزراء خارجية أوكلاهوما",
    "Category:Secretaries of state of Oregon": "تصنيف:وزراء خارجية أوريغن",
    "Category:Secretaries of state of Rhode Island": "تصنيف:وزراء خارجية رود آيلاند",
    "Category:Secretaries of state of South Carolina": "تصنيف:وزراء خارجية كارولاينا الجنوبية",
    "Category:Secretaries of state of South Dakota": "تصنيف:وزراء خارجية داكوتا الجنوبية",
    "Category:Secretaries of state of Tennessee": "تصنيف:وزراء خارجية تينيسي",
    "Category:Secretaries of state of Texas": "تصنيف:وزراء خارجية تكساس",
    "Category:Secretaries of state of Utah": "تصنيف:وزراء خارجية يوتا",
    "Category:Secretaries of state of Vermont": "تصنيف:وزراء خارجية فيرمونت",
    "Category:Secretaries of state of Washington (state)": "تصنيف:وزراء خارجية ولاية واشنطن",
    "Category:Secretaries of state of West Virginia": "تصنيف:وزراء خارجية فرجينيا الغربية",
    "Category:Secretaries of state of Wisconsin": "تصنيف:وزراء خارجية ويسكونسن",
    "Category:Secretaries of state of Wyoming": "تصنيف:وزراء خارجية وايومنغ",
    "Category:State secretaries of state of the United States by state": "تصنيف:وزراء خارجية الولايات في الولايات المتحدة حسب الولاية",
    "Category:Secretaries of state of Kentucky": "تصنيف:وزراء خارجية كنتاكي",
    "Category:Secretaries of state of Louisiana": "تصنيف:وزراء خارجية لويزيانا",
    "Category:Secretaries of state of North Dakota": "تصنيف:وزراء خارجية داكوتا الشمالية",
    "Category:State cabinet secretaries of Alabama": "تصنيف:أعضاء مجلس وزراء ألاباما",
    "Category:State cabinet secretaries of Alaska": "تصنيف:أعضاء مجلس وزراء ألاسكا",
    "Category:State cabinet secretaries of Arizona": "تصنيف:أعضاء مجلس وزراء أريزونا",
    "Category:State cabinet secretaries of Arkansas": "تصنيف:أعضاء مجلس وزراء أركنساس",
    "Category:State cabinet secretaries of California": "تصنيف:أعضاء مجلس وزراء كاليفورنيا",
    "Category:State cabinet secretaries of Colorado": "تصنيف:أعضاء مجلس وزراء كولورادو",
    "Category:State cabinet secretaries of Connecticut": "تصنيف:أعضاء مجلس وزراء كونيتيكت",
    "Category:State cabinet secretaries of Delaware": "تصنيف:أعضاء مجلس وزراء ديلاوير",
    "Category:State cabinet secretaries of Florida": "تصنيف:أعضاء مجلس وزراء فلوريدا",
    "Category:State cabinet secretaries of Georgia (U.S. state)": "تصنيف:أعضاء مجلس وزراء ولاية جورجيا",
    "Category:State cabinet secretaries of Hawaii": "تصنيف:أعضاء مجلس وزراء هاواي",
    "Category:State cabinet secretaries of Idaho": "تصنيف:أعضاء مجلس وزراء أيداهو",
    "Category:State cabinet secretaries of Illinois": "تصنيف:أعضاء مجلس وزراء إلينوي",
    "Category:State cabinet secretaries of Indiana": "تصنيف:أعضاء مجلس وزراء إنديانا",
    "Category:State cabinet secretaries of Iowa": "تصنيف:أعضاء مجلس وزراء آيوا",
    "Category:State cabinet secretaries of Kansas": "تصنيف:أعضاء مجلس وزراء كانساس",
    "Category:State cabinet secretaries of Kentucky": "تصنيف:أعضاء مجلس وزراء كنتاكي",
    "Category:State cabinet secretaries of Louisiana": "تصنيف:أعضاء مجلس وزراء لويزيانا",
    "Category:State cabinet secretaries of Maine": "تصنيف:أعضاء مجلس وزراء مين",
    "Category:State cabinet secretaries of Maryland": "تصنيف:أعضاء مجلس وزراء ماريلند",
    "Category:State cabinet secretaries of Massachusetts": "تصنيف:أعضاء مجلس وزراء ماساتشوستس",
    "Category:State cabinet secretaries of Michigan": "تصنيف:أعضاء مجلس وزراء ميشيغان",
    "Category:State cabinet secretaries of Minnesota": "تصنيف:أعضاء مجلس وزراء منيسوتا",
    "Category:State cabinet secretaries of Missouri": "تصنيف:أعضاء مجلس وزراء ميزوري",
    "Category:State cabinet secretaries of Nebraska": "تصنيف:أعضاء مجلس وزراء نبراسكا",
    "Category:State cabinet secretaries of New Hampshire": "تصنيف:أعضاء مجلس وزراء نيوهامشير",
    "Category:State cabinet secretaries of New Jersey": "تصنيف:أعضاء مجلس وزراء نيوجيرسي",
    "Category:State cabinet secretaries of New Mexico": "تصنيف:أعضاء مجلس وزراء نيومكسيكو",
    "Category:State cabinet secretaries of New York (state)": "تصنيف:أعضاء مجلس وزراء ولاية نيويورك",
    "Category:State cabinet secretaries of North Carolina": "تصنيف:أعضاء مجلس وزراء كارولاينا الشمالية",
    "Category:State cabinet secretaries of Ohio": "تصنيف:أعضاء مجلس وزراء أوهايو",
    "Category:State cabinet secretaries of Oklahoma": "تصنيف:أعضاء مجلس وزراء أوكلاهوما",
    "Category:State cabinet secretaries of Pennsylvania": "تصنيف:أعضاء مجلس وزراء بنسلفانيا",
    "Category:State cabinet secretaries of Rhode Island": "تصنيف:أعضاء مجلس وزراء رود آيلاند",
    "Category:State cabinet secretaries of South Carolina": "تصنيف:أعضاء مجلس وزراء كارولاينا الجنوبية",
    "Category:State cabinet secretaries of South Dakota": "تصنيف:أعضاء مجلس وزراء داكوتا الجنوبية",
    "Category:State cabinet secretaries of Tennessee": "تصنيف:أعضاء مجلس وزراء تينيسي",
    "Category:State cabinet secretaries of Texas": "تصنيف:أعضاء مجلس وزراء تكساس",
    "Category:State cabinet secretaries of Utah": "تصنيف:أعضاء مجلس وزراء يوتا",
    "Category:State cabinet secretaries of Vermont": "تصنيف:أعضاء مجلس وزراء فيرمونت",
    "Category:State cabinet secretaries of Virginia": "تصنيف:أعضاء مجلس وزراء فرجينيا",
    "Category:State cabinet secretaries of Washington (state)": "تصنيف:أعضاء مجلس وزراء ولاية واشنطن",
    "Category:State cabinet secretaries of West Virginia": "تصنيف:أعضاء مجلس وزراء فرجينيا الغربية",
    "Category:State cabinet secretaries of Wisconsin": "تصنيف:أعضاء مجلس وزراء ويسكونسن",
    "Category:State cabinet secretaries of Wyoming": "تصنيف:أعضاء مجلس وزراء وايومنغ",
    "Category:Cabinet secretaries of the Northern Mariana Islands": "تصنيف:أعضاء مجلس وزراء جزر ماريانا الشمالية",
}

secretaries_test_1 = {
    "Category:Secretaries of labour and employment of the Philippines": "تصنيف:وزراء عمل وتوظيف فلبينيون",
    "Category:United States secretaries of health and human services": "تصنيف:وزراء صحة وخدمات إنسانية أمريكيون",
    "Category:Secretaries of communications and transportation of Mexico": "تصنيف:وزراء اتصالات ونقل مكسيكيون",
    "Category:Secretaries of environment and natural resources of the Philippines": "تصنيف:وزراء بيئة وموارد طبيعية فلبينيون",
    "Category:Secretaries of war and navy of Colombia": "تصنيف:وزراء حرب وبحرية كولومبيون",
    "Category:United States deputy secretaries of health and human services": "تصنيف:نواب وزير الصحة والخدمات الإنسانية الأمريكي",
    "Category:United States deputy secretaries of housing and urban development": "تصنيف:نواب وزير الإسكان والتنمية الحضرية الأمريكي",
    "Category:United States secretaries of housing and urban development": "تصنيف:وزراء إسكان وتنمية حضرية أمريكيون",
    "Category:United States assistant secretaries of housing and urban development": "تصنيف:مساعدو وزير الإسكان والتنمية الحضرية الأمريكي",
    "Category:State secretaries of state of the United States": "تصنيف:وزراء خارجية الولايات في الولايات المتحدة",
    "Category:Secretaries of agriculture of the Philippines": "تصنيف:وزراء زراعة فلبينيون",
    "Category:Secretaries of education of the Philippines": "تصنيف:وزراء تعليم فلبينيون",
    "Category:Secretaries of energy of the Philippines": "تصنيف:وزراء طاقة فلبينيون",
    "Category:Secretaries of finance of Mexico": "تصنيف:وزراء مالية مكسيكيون",
    "Category:Secretaries of finance of the Philippines": "تصنيف:وزراء مالية فلبينيون",
    "Category:Secretaries of foreign affairs of Colombia": "تصنيف:وزراء شؤون خارجية كولومبيون",
    "Category:Secretaries of foreign affairs of Mexico": "تصنيف:وزراء شؤون خارجية مكسيكيون",
    "Category:Secretaries of foreign affairs of the Philippines": "تصنيف:وزراء شؤون خارجية فلبينيون",
    "Category:Secretaries of health of Puerto Rico": "تصنيف:وزراء صحة بورتوريكيون",
    "Category:Secretaries of health of the Philippines": "تصنيف:وزراء صحة فلبينيون",
    "Category:Secretaries of justice of Puerto Rico": "تصنيف:وزراء عدل بورتوريكيون",
    "Category:Secretaries of justice of the Philippines": "تصنيف:وزراء عدل فلبينيون",
    "Category:Secretaries of state of France": "تصنيف:وزراء خارجية فرنسيون",
    "Category:Secretaries of state of Puerto Rico": "تصنيف:وزراء خارجية بورتوريكيون",
    "Category:Secretaries of state of Spain": "تصنيف:وزراء خارجية إسبان",
    "Category:Secretaries of the interior of Colombia": "تصنيف:وزراء داخلية كولومبيون",
    "Category:Secretaries of tourism of the Philippines": "تصنيف:وزراء سياحة فلبينيون",
    "Category:Secretaries of transportation of the Philippines": "تصنيف:وزراء نقل فلبينيون",
    "Category:United States secretaries of commerce": "تصنيف:وزراء تجارة أمريكيون",
    "Category:United States secretaries of state": "تصنيف:وزراء خارجية أمريكيون",
    "Category:United States secretaries of the interior": "تصنيف:وزراء داخلية أمريكيون",
    "Category:Secretaries of agriculture of Mexico": "تصنيف:وزراء زراعة مكسيكيون",
    "Category:Secretaries of agriculture of the United States": "تصنيف:وزراء زراعة أمريكيون",
    "Category:Secretaries of defense of Mexico": "تصنيف:وزراء دفاع مكسيكيون",
    "Category:Secretaries of economy of Mexico": "تصنيف:وزراء اقتصاد مكسيكيون",
    "Category:Secretaries of education of Mexico": "تصنيف:وزراء تعليم مكسيكيون",
    "Category:Secretaries of energy of Mexico": "تصنيف:وزراء طاقة مكسيكيون",
    "Category:Secretaries of health of Mexico": "تصنيف:وزراء صحة مكسيكيون",
    "Category:Secretaries of labor of Mexico": "تصنيف:وزراء عمل مكسيكيون",
    "Category:Secretaries of public safety of Mexico": "تصنيف:وزراء سلامة عامة مكسيكيون",
    "Category:Secretaries of the Australian Department of Defence": "تصنيف:وزراء دفاع أستراليون",
    "Category:Secretaries of the Australian Department of Finance": "تصنيف:وزراء مالية أستراليون",
    "Category:Secretaries of the environment of Mexico": "تصنيف:وزراء بيئة مكسيكيون",
    "Category:Secretaries of the interior of Mexico": "تصنيف:وزراء داخلية مكسيكيون",
    "Category:Secretaries of tourism of Mexico": "تصنيف:وزراء سياحة مكسيكيون",
    "Category:Secretaries of transportation of the United States": "تصنيف:وزراء نقل أمريكيون",
    "Category:United States deputy secretaries of agriculture": "تصنيف:نواب وزير الزراعة الأمريكي",
    "Category:United States deputy secretaries of commerce": "تصنيف:نواب وزير التجارة الأمريكي",
    "Category:United States deputy secretaries of defense": "تصنيف:نواب وزير الدفاع الأمريكي",
    "Category:United States deputy secretaries of education": "تصنيف:نواب وزير التعليم الأمريكي",
    "Category:United States deputy secretaries of energy": "تصنيف:نواب وزير الطاقة الأمريكي",
    "Category:United States deputy secretaries of homeland security": "تصنيف:نواب وزير الأمن الداخلي الأمريكي",
    "Category:United States deputy secretaries of labor": "تصنيف:نواب وزير العمل الأمريكي",
    "Category:United States deputy secretaries of the interior": "تصنيف:نواب وزير الداخلية الأمريكي",
    "Category:United States deputy secretaries of the treasury": "تصنيف:نواب وزير الخزانة الأمريكي",
    "Category:United States deputy secretaries of transportation": "تصنيف:نواب وزير النقل الأمريكي",
    "Category:United States deputy secretaries of veterans affairs": "تصنيف:نواب وزير شؤون المحاربين القدامى الأمريكي",
    "Category:United States secretaries of defense": "تصنيف:وزراء دفاع أمريكيون",
    "Category:United States secretaries of education": "تصنيف:وزراء تعليم أمريكيون",
    "Category:United States secretaries of energy": "تصنيف:وزراء طاقة أمريكيون",
    "Category:United States secretaries of homeland security": "تصنيف:وزراء أمن داخلي أمريكيون",
    "Category:United States secretaries of labor": "تصنيف:وزراء عمل أمريكيون",
    "Category:United States secretaries of the army": "تصنيف:وزراء جيش أمريكيون",
    "Category:United States secretaries of the treasury": "تصنيف:وزراء خزانة أمريكيون",
    "Category:United States secretaries of veterans affairs": "تصنيف:وزراء شؤون محاربين قدامى أمريكيون",
    "Category:United States secretaries of war": "تصنيف:وزراء حرب أمريكيون",
    "Category:United States assistant secretaries of defense": "تصنيف:مساعدو وزير الدفاع الأمريكي",
    "Category:United States assistant secretaries of the interior": "تصنيف:مساعدو وزير الداخلية الأمريكي",
    "Category:United States assistant secretaries of war": "تصنيف:مساعدو وزير الحرب الأمريكي",
}


to_test = [
    # ("test_secretaries_new", new, resolve_arabic_category_label),
    ("test_secretaries_0", secretaries_test_0, resolve_arabic_category_label),
    ("test_secretaries_1", secretaries_test_1, resolve_arabic_category_label),
    ("test_secretaries_2", secretaries_test_2, resolve_arabic_category_label),
]


@pytest.mark.parametrize("category,expected", secretaries_test_1.items(), ids=secretaries_test_1.keys())
@pytest.mark.fast
def test_secretaries_1(category: str, expected: str) -> None:
    label = resolve_arabic_category_label(category)
    assert label == expected


@pytest.mark.parametrize("name,data,callback", to_test)
@pytest.mark.dump
def test_dump_all(name: str, data: dict[str, str], callback) -> None:
    expected, diff_result = one_dump_test(data, callback)
    dump_diff(diff_result, name)

    # dump_diff_text(expected, diff_result, name)
    assert diff_result == expected, f"Differences found: {len(diff_result):,}, len all :{len(data):,}"
