"""
Tests
"""

import pytest

from ArWikiCats.legacy_bots.common_resolver_chain import _lookup_country_with_in_prefix, get_con_label
from utils.dump_runner import make_dump_test_name_data

data_in = {
    "in New York (state)": "في ولاية نيويورك",
    "in Texas": "في تكساس",
    "in the United States": "في الولايات المتحدة",
    "in Charles Town, West Virginia": "في تشارلز تاون",
    "in the united kingdom": "في المملكة المتحدة",
}

join_data_same = {
    "busan": "بوسان",
    "chefs": "طباخون",
    "slavery": "العبودية",
    "south carolina": "كارولاينا الجنوبية",
    "south dakota": "داكوتا الجنوبية",
    "american civil war": "الحرب الأهلية الأمريكية",
    "united states navy": "البحرية الأمريكية",
    "vietnam war": "حرب فيتنام",
    "weather": "الطقس",
    "other media": "وسائط أخرى",
    "films": "أفلام",
    "united states": "الولايات المتحدة",
    "yemen": "اليمن",
    "aomori prefecture": "محافظة آوموري",
    "belarus": "روسيا البيضاء",
    "american comics": "قصص مصورة أمريكية",
    "british television series": "مسلسلات تلفزيونية بريطانية",
    "comics": "قصص مصورة",
    "egyptian mythology": "أساطير مصرية",
    "national teams": "منتخبات وطنية",
    "montreal": "مونتريال",
    "poland": "بولندا",
    "by academic discipline": "حسب التخصص الأكاديمي",
    "by athletic event": "حسب حدث ألعاب القوى",
    "by under-20 national team": "حسب المنتخب الوطني تحت 20 سنة",
    "1420": "1420",
    "20th century": "القرن 20",
    "1420s": "عقد 1420",
    "2nd century": "القرن 2",
    "eritrea": "إرتريا",
    "1420 by country": "1420 حسب البلد",
    "14th century bc": "القرن 14 ق م",
    "world-war-ii": "الحرب العالمية الثانية",
    "14th century": "القرن 14",
    "curaçao": "كوراساو",
    "algeria": "الجزائر",
    "jiangsu": "جيانغسو",
    "aden": "عدن",
    "ahrweiler (district)": "أرفيلر",
    "georgia (country)": "جورجيا",
    "georgia (u.s. state)": "ولاية جورجيا",
    "argentina": "الأرجنتين",
    "germany": "ألمانيا",
    "1420–51": "1420–51",
    "abkhazia": "أبخازيا",
    "afghanistan": "أفغانستان",
    "mandatory syria": "الانتداب الفرنسي على سوريا ولبنان",
    "socialist republic-of macedonia": "جمهورية مقدونيا الاشتراكية",
    "california": "كاليفورنيا",
    "delaware": "ديلاوير",
    "21st century": "القرن 21",
    "north macedonia": "مقدونيا الشمالية",
    "american novelists": "روائيون أمريكيون",
    "canadian awards": "جوائز كندية",
    "indian politicians": "سياسيون هنود",
    "religious organizations": "منظمات دينية",
    "slovak musicians": "موسيقيون سلوفاكيون",
    "british television series characters": "شخصيات مسلسلات تلفزيونية بريطانية",
    "ottoman–persian wars": "الحروب العثمانية الفارسية",
    "westchester county, new york": "مقاطعة ويستتشستر (نيويورك)",
    "buildings and structures": "مبان ومنشآت",
    "diplomatic missions": "بعثات دبلوماسية",
    "moon": "القمر",
    "the-national-register-of-historic-places": "السجل الوطني للأماكن التاريخية",
    "19th century": "القرن 19",
    "turkey": "تركيا",
    "brian wilson": "بريان ويلسون",
    "alberta": "ألبرتا",
    "finland": "فنلندا",
    "western australia": "أستراليا الغربية",
    "future": "المستقبل",
    "other languages": "لغات أخرى",
    "spanish composers": "ملحنون إسبان",
    "death": "الموت",
    "10th century": "القرن 10",
    "american samoa": "ساموا الأمريكية",
    "north korea": "كوريا الشمالية",
    "togo": "توغو",
    "venezuela": "فنزويلا",
    "zimbabwe": "زيمبابوي",
    "prison custody": "السجن",
    "matt damon": "مات ديمون",
    "lady gaga": "ليدي غاغا",
    "by century and occupation": "حسب القرن والمهنة",
    "by century of closing": "حسب قرن الاغلاق",
    "by club or team": "حسب النادي أو الفريق",
    "by location and occupation": "حسب الموقع والمهنة",
    "by nation and year": "حسب الموطن والسنة",
    "by occupation and region": "حسب المهنة والمنطقة",
    "by period of introduction": "حسب حقبة الاستحداث",
    "by populated place and decade": "حسب المكان المأهول والعقد",
    "by populated place and occupation": "حسب المكان المأهول والمهنة",
    "by province or territory": "حسب المقاطعة أو الإقليم",
    "by sport and year": "حسب الرياضة والسنة",
    "by state or territory": "حسب الولاية أو الإقليم",
    "by state or union territory": "حسب الولاية أو الإقليم الاتحادي",
    "by university or college": "حسب الجامعة أو الكلية",
    "by year and continent": "حسب السنة والقارة",
    "by year of disestablishment": "حسب سنة الانحلال",
    "by year of introduction": "حسب سنة الاستحداث",
    " kingdom-of asturias": "مملكة أستورياس",
    "alphen aan den rijn": "ألفن آن دن راين",
    "city of westminster": "مدينة وستمنستر",
    "london borough of lambeth": "لامبيث",
    "province of valencia": "بلنسية (مقاطعة)",
    "west midlands (county)": "مقاطعة ميدلاند الغربية",
    "vila nova de gaia": "فيلا نوا دغايا",
    " kingdom-of hanover": "مملكة هانوفر",
    " kingdom-of sardinia": "مملكة سردينيا",
    " kingdom-of sicily": "مملكة صقلية",
    "gautam buddh nagar district": "مقاطعة جوتام بوذا نجر",
    "insular areas of united states": "المناطق المعزولة في الولايات المتحدة",
    "israeli reality television series": "مسلسلات تلفزيونية واقعية إسرائيلية",
    "saint vincent and grenadines": "سانت فنسنت وجزر غرينادين",
    "santa maria da feira": "سانتا ماريا دا فييرا",
    "south korean women's sport": "رياضة كورية جنوبية نسائية",
    "special region of yogyakarta": "يوجياكرتا",
    "asian para games": "الألعاب البارالمبية الآسيوية",
    "australian capital territory": "إقليم العاصمة الأسترالية",
    "basque country (autonomous community)": "منطقة الباسك ذاتية الحكم",
    "bay of plenty region": "إقليم خليج بانتي",
    "british virgin islands": "جزر العذراء البريطانية",
    "capital region of denmark": "إقليم هوفدستادن",
    "central african republic": "جمهورية إفريقيا الوسطى",
    "cocos (keeling) islands": "جزر كوكوس",
    "collectivity of saint martin": "تجمع سان مارتين",
    "federated states-of micronesia": "ولايات ميكرونيسيا المتحدة",
    "french colonial empire": "الإمبراطورية الاستعمارية الفرنسية",
    "holy roman empire": "الإمبراطورية الرومانية المقدسة",
    "irish free state": "الدولة الأيرلندية الحرة",
    "northern mariana islands": "جزر ماريانا الشمالية",
    "peerage of ireland": "نبلاء إيرلندا",
    "region of southern denmark": "إقليم سيد دنمارك",
    "spanish east indies": "جزر الهند الشرقية الإسبانية",
    "summer olympics ": "الألعاب الأولمبية الصيفية",
    "summer world university games": "ألعاب الجامعات العالمية الصيفية",
    "turks and caicos islands": "جزر توركس وكايكوس",
    "united arab emirates": "الإمارات العربية المتحدة",
    "united states virgin islands": "جزر العذراء الأمريكية",
    "world aquatics championships": "بطولة العالم للرياضات المائية",
    "world athletics championships": "بطولة العالم لألعاب القوى",
    "udham singh nagar district": "مقاطعة اودهام سينغ نجر",
    "ústí nad labem region": "إقليم أوستي ناد لابم",
    " kingdom-of montenegro": "مملكة الجبل الأسود",
    "aviation accidents or incidents": "حوادث طيران",
    "azerbaijan soviet socialist republic": "الجمهورية الأذرية السوفيتية الاشتراكية",
    "bosnia and herzegovina politicians": "سياسيون بوسنيون",
    "eighteenth dynasty of egypt": "الأسرة المصرية الثامنة عشر",
    "federal subjects of russia": "كيانات روسيا الاتحادية",
    "government of burkina faso": "حكومة بوركينا فاسو",
    "indian schools and colleges": "مدارس وكليات هندية",
    "london borough of ealing": "إيلنغ",
    "mexican drama television series": "مسلسلات تلفزيونية درامية مكسيكية",
    "order of british empire": "وسام الإمبراطورية البريطانية",
    "parliament of great britain": "برلمان بريطانيا العظمى",
    "pays de la loire": "وادي اللوار",
    "royal navy of oman": "البحرية السلطانية العمانية",
    "são tomé and príncipe": "ساو تومي وبرينسيب",
    "ukrainian soviet socialist republic": "جمهورية أوكرانيا السوفيتية الاشتراكية",
    "united states air force": "القوات الجوية الأمريكية",
    "united states gubernatorial elections": "انتخابات حكام الولايات المتحدة",
    "saint kitts and nevis": "سانت كيتس ونيفيس",
    "parliament of united kingdom": "برلمان المملكة المتحدة",
}


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


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


test_dump_all = make_dump_test_name_data([("test_get_con_lab_bot", join_data_same)], get_con_label, run_same=True)
