import pytest

from ArWikiCats import resolve_label_ar
from utils.dump_runner import make_dump_test_name_data_callback

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

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

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

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


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


@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_label_ar(category)
    assert label == expected


test_dump_all = make_dump_test_name_data_callback(to_test, run_same=True)
