"""
Tests for country2_label_bot module functions.
"""

import pytest
from load_one_data import dump_diff, dump_same_and_not_same, one_dump_test

from ArWikiCats import resolve_label_ar
from ArWikiCats.legacy_bots.ma_bots2.country2_label_bot import country_2_title_work

title_work_tests_data = {
    # "mass media in bosnia and herzegovina": "وسائل إعلام في البوسنة والهرسك",
    # "mass media in morocco": "وسائل إعلام في المغرب",
    # "1520 films by country": "أفلام 1520 حسب البلد",
    " kingdom-of italy": "مملكة إيطاليا",
    "1520 by country": "1520 حسب البلد",
    "1520 crimes in africa": "جرائم 1520 في إفريقيا",
    "1520 elections in united states": "انتخابات 1520 في الولايات المتحدة",
    "1520 in antigua and barbuda": "1520 في أنتيغوا وباربودا",
    "1520 in asian sport": "1520 في رياضة آسيوية",
    "1520 in brazilian sport": "1520 في رياضة برازيلية",
    "1520 in canada": "1520 في كندا",
    "1520 in china": "1520 في الصين",
    "1520 in chinese sport": "1520 في رياضة صينية",
    "1520 in football": "1520 في كرة القدم",
    "1520 in men's football": "1520 في كرة القدم للرجال",
    "1520 in men's international football": "1520 في كرة قدم دولية للرجال",
    "1520 in mexico": "1520 في المكسيك",
    "1520 in north america": "1520 في أمريكا الشمالية",
    "1520 in rugby union": "1520 في اتحاد الرجبي",
    "1520 in south america": "1520 في أمريكا الجنوبية",
    "1520 in south american football": "1520 في كرة القدم الأمريكية الجنوبية",
    "1520 in taiwan": "1520 في تايوان",
    "1520 in television": "1520 في التلفاز",
    "1520 in thailand": "1520 في تايلاند",
    "1520 in united kingdom": "1520 في المملكة المتحدة",
    "1520 in united states": "1520 في الولايات المتحدة",
    "1520 in women's sport": "1520 في رياضة نسائية",
    "1520 in yemen": "1520 في اليمن",
    "1520 in youth football": "1520 في كرة القدم للشباب",
    "1520s in asia": "عقد 1520 في آسيا",
    "1520s in united states": "عقد 1520 في الولايات المتحدة",
    "1520–95 in european rugby union": "1520–95 في اتحاد الرجبي الأوروبي",
    "20th century in iraq": "القرن 20 في العراق",
    "ambassadors of afghanistan": "سفراء أفغانستان",
    "ambassadors of algeria": "سفراء الجزائر",
    "ambassadors of austria": "سفراء النمسا",
    "ambassadors of brazil": "سفراء البرازيل",
    "ambassadors of canada": "سفراء كندا",
    "ambassadors of chad": "سفراء تشاد",
    "ambassadors of china": "سفراء الصين",
    "ambassadors of federated states-of micronesia": "سفراء ولايات ميكرونيسيا المتحدة",
    "ambassadors of fiji": "سفراء فيجي",
    "ambassadors of ghana": "سفراء غانا",
    "ambassadors of great britain": "سفراء بريطانيا العظمى",
    "ambassadors of italy": "سفراء إيطاليا",
    "ambassadors of japan": "سفراء اليابان",
    "ambassadors of palau": "سفراء بالاو",
    "ambassadors of south africa": "سفراء جنوب إفريقيا",
    "ambassadors of united states": "سفراء الولايات المتحدة",
    "ambassadors to ottoman empire": "سفراء إلى الدولة العثمانية",
    "archaeology of europe": "علم الآثار في أوروبا",
    "arizona in fiction": "أريزونا في الخيال",
    "attacks on military installations": "هجمات على منشآت عسكرية",
    "baseball playerss in florida": "لاعبو كرة قاعدة في فلوريدا",
    "baseball playerss in south korea": "لاعبو كرة قاعدة في كوريا الجنوبية",
    "basketball playerss in lebanon": "لاعبو كرة سلة في لبنان",
    "battles of napoleonic wars": "معارك الحروب النابليونية",
    "battles of vietnam war": "معارك حرب فيتنام",
    "bridges in france": "جسور في فرنسا",
    "buildings and structures in 1520": "مبان ومنشآت في 1520",
    "buildings and structures in africa": "مبان ومنشآت في إفريقيا",
    "buildings and structures in georgia (u.s. state)": "مبان ومنشآت في ولاية جورجيا",
    "buildings and structures in idaho": "مبان ومنشآت في أيداهو",
    "buildings and structures in prince edward island": "مبان ومنشآت في جزيرة الأمير إدوارد",
    "burials in washington (state)": "مدفونون في ولاية واشنطن",
    "by city in colombia": "حسب المدينة في كولومبيا",
    "by city in northern-ireland": "حسب المدينة في أيرلندا الشمالية",
    "by county in taiwan": "حسب المقاطعة في تايوان",
    "by educational institution in derbyshire": "حسب الهيئة التعليمية في داربيشير",
    "by league in united states": "حسب الدوري في الولايات المتحدة",
    "by newspaper in california": "حسب الصحيفة في كاليفورنيا",
    "by team in united states": "حسب الفريق في الولايات المتحدة",
    "by university or college in beijing": "حسب الجامعة أو الكلية في بكين",
    "by university or college in guatemala": "حسب الجامعة أو الكلية في غواتيمالا",
    "by university or college in india": "حسب الجامعة أو الكلية في الهند",
    "by university or college in mauritius": "حسب الجامعة أو الكلية في موريشيوس",
    "by university or college in nebraska": "حسب الجامعة أو الكلية في نبراسكا",
    "by university or college in north carolina": "حسب الجامعة أو الكلية في كارولاينا الشمالية",
    "canadian ice hockey by league": "هوكي الجليد الكندية حسب الدوري",
    "canadian ice hockey by team": "هوكي الجليد الكندية حسب الفريق",
    "christianity in united states": "المسيحية في الولايات المتحدة",
    "city of zagreb": "مدينة زغرب",
    "companies of georgia (country)": "شركات في جورجيا",
    "companies of southeast asia": "شركات في جنوب شرق آسيا",
    "covid-19 pandemic in paraná (state)": "جائحة فيروس كورونا في ولاية بارانا",
    "crimes in peru": "جرائم في بيرو",
    "croatian war of independence": "الحرب الكرواتية في استقلال",
    "disestablishments in ecuador": "انحلالات في الإكوادور",
    "disestablishments in georgia (u.s. state)": "انحلالات في ولاية جورجيا",
    "disestablishments in yugoslavia": "انحلالات في يوغسلافيا",
    "education in france": "تعليم في فرنسا",
    "education in israel": "تعليم في إسرائيل",
    "education in united states": "تعليم في الولايات المتحدة",
    "establishments in guernsey": "تأسيسات في غيرنزي",
    "establishments in southeast asia": "تأسيسات في جنوب شرق آسيا",
    "ethnic groups in china": "مجموعات عرقية في الصين",
    "fauna of vermont": "حيوانات فيرمونت",
    "federalist party members of united states house-of-representatives": "أعضاء الحزب الفيدرالي الأمريكي في مجلس النواب الأمريكي",
    "field hockey playerss in germany": "لاعبو هوكي ميدان في ألمانيا",
    "films basedon non-fiction books about organized crime": "أفلام مبنية على كتب غير خيالية عن جريمة منظمة",
    "fishes of europe": "أسماك أوروبا",
    "food and drink in europe": "أطعمة ومشروبات في أوروبا",
    "french invasion of egypt and syria": "الغزو الفرنسي في مصر وسوريا",
    "geography of kansas": "جغرافيا كانساس",
    "georgia (u.s. state) in fiction": "ولاية جورجيا في الخيال",
    "government of burkina faso": "حكومة بوركينا فاسو",
    "government of turkey": "حكومة تركيا",
    "high schools in india": "مدارس ثانوية في الهند",
    "historic districts in massachusetts": "المناطق التاريخية في ماساتشوستس",
    "history of austria hungary": "تاريخ الإمبراطورية النمساوية المجرية",
    "history of central african republic": "تاريخ جمهورية إفريقيا الوسطى",
    "history of copenhagen": "تاريخ كوبنهاغن",
    "history of north america": "تاريخ أمريكا الشمالية",
    "history of northern ireland": "تاريخ أيرلندا الشمالية",
    "history of nova scotia": "تاريخ نوفا سكوشا",
    "history of petroleum industry": "تاريخ صناعة بترولية",
    "immigration to europe": "الهجرة إلى أوروبا",
    "immigration to united states": "الهجرة إلى الولايات المتحدة",
    "impact of covid-19 pandemic": "تأثيرات جائحة فيروس كورونا",
    "indigenous peoples of americas": "شعوب أصلية في الأمريكتين",
    "installations of united states air force": "منشآت في القوات الجوية الأمريكية",
    "iowa in fiction": "آيوا في الخيال",
    "kingdom-of italy (1520–1520)": "مملكة إيطاليا (1520–1520)",
    "know-nothing members of united states house-of-representatives": "أعضاء حزب لا أدري في مجلس النواب الأمريكي",
    "lists of ambassadors": "قوائم سفراء",
    "lists of bosnia and herzegovina people": "قوائم بوسنيون",
    "lists of country subdivisions": "قوائم تقسيمات البلد",
    "lists of legislators": "قوائم مشرعون",
    "lists of roads": "قوائم طرقات",
    "members of maine legislature": "أعضاء هيئة مين التشريعية",
    "military operations of american civil war": "عمليات عسكرية في الحرب الأهلية الأمريكية",
    "military operations of syrian civil war": "عمليات عسكرية في الحرب الأهلية السورية",
    "military operations of war in afghanistan (1520–1520)": "عمليات عسكرية في الحرب في أفغانستان (1520–1520)",
    "military operations of war": "عمليات عسكرية في الحرب",
    "montana in fiction": "مونتانا في الخيال",
    "national-register-of-historic-places in north carolina": "السجل الوطني للأماكن التاريخية في كارولاينا الشمالية",
    "nations in summer olympics": "بلدان في الألعاب الأولمبية الصيفية",
    "nebraska in fiction": "نبراسكا في الخيال",
    "netball in north america": "كرة الشبكة في أمريكا الشمالية",
    "new mexico in fiction": "نيومكسيكو في الخيال",
    "non-profit organizations of brazil": "منظمات غير ربحية في البرازيل",
    "non-profit organizations of canada": "منظمات غير ربحية في كندا",
    "non-profit organizations of chile": "منظمات غير ربحية في تشيلي",
    "non-profit organizations of colombia": "منظمات غير ربحية في كولومبيا",
    "non-profit organizations of costa rica": "منظمات غير ربحية في كوستاريكا",
    "non-profit organizations of united kingdom": "منظمات غير ربحية في المملكة المتحدة",
    "non-profit organizations of united states": "منظمات غير ربحية في الولايات المتحدة",
    "northern ireland of canadian descent": "أيرلندا الشمالية في أصل كندي",
    "order of british empire": "وسام الإمبراطورية البريطانية",
    "organizations based in gabon": "منظمات مقرها في الغابون",
    "ottoman empire by decade": "الدولة العثمانية حسب العقد",
    "parks in south america": "متنزهات في أمريكا الجنوبية",
    "parliament of barbados": "برلمان بربادوس",
    "parliament of england 1520": "برلمان إنجلترا 1520",
    "parliament of great britain": "برلمان بريطانيا العظمى",
    "parliament of ireland 1520": "برلمان أيرلندا 1520",
    "parliament of northern ireland 1520–1520": "برلمان أيرلندا الشمالية 1520–1520",
    "prime ministers of japan": "رؤساء وزراء اليابان",
    "prime ministers of ukraine": "رؤساء وزراء أوكرانيا",
    "protected areas of georgia (u.s. state)": "مناطق محمية في ولاية جورجيا",
    "railway stations in albania": "محطات السكك الحديدية في ألبانيا",
    "railway stations in austria": "محطات السكك الحديدية في النمسا",
    "railway stations in bangladesh": "محطات السكك الحديدية في بنغلاديش",
    "railway stations in canada": "محطات السكك الحديدية في كندا",
    "railway stations in denmark": "محطات السكك الحديدية في الدنمارك",
    "railway stations in france": "محطات السكك الحديدية في فرنسا",
    "railway stations in germany": "محطات السكك الحديدية في ألمانيا",
    "railway stations in great britain": "محطات السكك الحديدية في بريطانيا العظمى",
    "railway stations in hong kong": "محطات السكك الحديدية في هونغ كونغ",
    "railway stations in indonesia": "محطات السكك الحديدية في إندونيسيا",
    "railway stations in japan": "محطات السكك الحديدية في اليابان",
    "railway stations in latvia": "محطات السكك الحديدية في لاتفيا",
    "railway stations in netherlands": "محطات السكك الحديدية في هولندا",
    "railway stations in new zealand": "محطات السكك الحديدية في نيوزيلندا",
    "railway stations in north korea": "محطات السكك الحديدية في كوريا الشمالية",
    "railway stations in northern-ireland": "محطات السكك الحديدية في أيرلندا الشمالية",
    "railway stations in philippines": "محطات السكك الحديدية في الفلبين",
    "railway stations in poland": "محطات السكك الحديدية في بولندا",
    "railway stations in republic-of ireland": "محطات السكك الحديدية في جمهورية أيرلندا",
    "railway stations in romania": "محطات السكك الحديدية في رومانيا",
    "railway stations in russia": "محطات السكك الحديدية في روسيا",
    "railway stations in russian empire": "محطات السكك الحديدية في الإمبراطورية الروسية",
    "railway stations in serbia": "محطات السكك الحديدية في صربيا",
    "railway stations in south korea": "محطات السكك الحديدية في كوريا الجنوبية",
    "railway stations in spain": "محطات السكك الحديدية في إسبانيا",
    "railway stations in sweden": "محطات السكك الحديدية في السويد",
    "railway stations in united kingdom": "محطات السكك الحديدية في المملكة المتحدة",
    "railway stations in united states": "محطات السكك الحديدية في الولايات المتحدة",
    "religion in united states": "الدين في الولايات المتحدة",
    "rivers of united states": "أنهار الولايات المتحدة",
    "road incident deaths in united states": "وفيات حوادث الطرق في الولايات المتحدة",
    "saint kitts and nevis in summer olympics": "سانت كيتس ونيفيس في الألعاب الأولمبية الصيفية",
    "shopping malls in ukraine": "مراكز تسوق في أوكرانيا",
    "skyscrapers in united arab emirates": "ناطحات سحاب في الإمارات العربية المتحدة",
    "sports governing bodies in north america": "هيئات تنظيم رياضية في أمريكا الشمالية",
    "sports venues in australia": "ملاعب رياضية في أستراليا",
    "synagogues in switzerland": "كنس في سويسرا",
    "tanks of united states": "دبابات الولايات المتحدة",
    "tourism in republic-of ireland": "سياحة في جمهورية أيرلندا",
    "tourism in united kingdom": "سياحة في المملكة المتحدة",
    "trade unions in caribbean": "نقابات عمالية في الكاريبي",
    "transport infrastructure in south america": "البنية التحتية للنقل في أمريكا الجنوبية",
    "transportation buildings and structures in new hampshire": "مبان ومنشآت نقل في نيوهامشير",
    "unincorporated communities in alaska": "مجتمعات فردية في ألاسكا",
    "united nations in geneva": "الأمم المتحدة في جنيف",
    "united states by state or territory": "الولايات المتحدة حسب الولاية أو الإقليم",
    "united states in 1520": "الولايات المتحدة في 1520",
    "united states navy to royal navy": "البحرية الأمريكية إلى البحرية الملكية",
    "universities and colleges in andhra pradesh": "جامعات وكليات في أندرا برديش",
    "universities and colleges in ghana": "جامعات وكليات في غانا",
    "universities and colleges in texas": "جامعات وكليات في تكساس",
    "universities and colleges in ukraine": "جامعات وكليات في أوكرانيا",
    "universities and colleges in uruguay": "جامعات وكليات في أوروغواي",
    "university of galway": "جامعة جلوي",
    "university of sheffield": "جامعة شفيلد",
    "verkhovna rada of ukrainian soviet socialist republic": "المجلس الأعلى الأوكراني في جمهورية أوكرانيا السوفيتية الاشتراكية",
    "villages in north macedonia": "قرى في مقدونيا الشمالية",
    "volleyball competitions in asia": "منافسات كرة طائرة في آسيا",
    "war of 1520": "حرب 1520",
    "water of coquimbo region": "مياه في إقليم كوكيمبو",
    "water of hambantota district": "مياه في مديرية هامبانتوتا",
    "water of matale district": "مياه في مديرية ماتال",
    "water of novosibirsk oblast": "مياه في نوفوسيبيرسك أوبلاست",
    "water of wilkes land": "مياه في ويلكس لاند",
    "wheelchair basketball playerss in turkey": "لاعبو كرة سلة على كراسي متحركة في تركيا",
    "whig party members of united states house-of-representatives": "أعضاء حزب اليمين في مجلس النواب الأمريكي",
    "wisconsin in fiction": "ويسكونسن في الخيال",
    "women's footballers in ireland": "لاعبات كرة قدم في أيرلندا",
    "years of 16th century": "سنوات القرن 16",
    "years of 17th century": "سنوات القرن 17",
    "years of 18th century": "سنوات القرن 18",
    "years of 19th century": "سنوات القرن 19",
}

test_2 = {}

data_2 = {
    "sport in ottoman empire": "الرياضة في الدولة العثمانية",
    "sports in ottoman empire": "الرياضة في الدولة العثمانية",
}


@pytest.mark.fast
@pytest.mark.parametrize("category,expected", title_work_tests_data.items(), ids=title_work_tests_data.keys())
def test_data_based_in(category: str, expected: str) -> None:
    result = country_2_title_work(category)
    assert result == expected


@pytest.mark.fast
@pytest.mark.parametrize("category,expected", data_2.items(), ids=data_2.keys())
def test_data_based_in_data_2(category: str, expected: str) -> None:
    result = country_2_title_work(category)
    assert result == expected


to_test = [
    ("title_work_tests_data", title_work_tests_data, country_2_title_work),
    ("test_2", test_2, country_2_title_work),
]


@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_same_and_not_same(data, diff_result, name)
    assert diff_result == expected, f"Differences found: {len(diff_result):,}, len all :{len(data):,}"
