""" Tests for i18n tip key completeness. Regression for: "i" tooltip spans showing untranslated English text in the German planner because tip_* keys were missing from the DE translation dict. Also covers wiz_summary_label used in the wizard preview summary bar. """ import pytest from padelnomics.i18n import get_translations EN = get_translations("en") DE = get_translations("de") # Every key that a slider tip or inline tooltip now references via t.tip_* TIP_KEYS = [ "wiz_summary_label", "tip_permits_compliance", "tip_dbl_courts", "tip_sgl_courts", "tip_sqm_dbl_hall", "tip_sqm_sgl_hall", "tip_sqm_dbl_outdoor", "tip_sqm_sgl_outdoor", "tip_rate_peak", "tip_rate_offpeak", "tip_rate_single", "tip_peak_pct", "tip_booking_fee", "tip_util_target", "tip_hours_per_day", "tip_days_indoor", "tip_days_outdoor", "tip_membership_rev", "tip_fb_rev", "tip_coaching_rev", "tip_retail_rev", "tip_glass_type", "tip_court_cost_dbl", "tip_court_cost_sgl", "tip_hall_cost_sqm", "tip_foundation_sqm", "tip_land_price_sqm", "tip_hvac", "tip_electrical", "tip_sanitary", "tip_fire_protection", "tip_planning", "tip_floor_prep", "tip_hvac_upgrade", "tip_lighting_upgrade", "tip_fitout", "tip_outdoor_foundation", "tip_outdoor_site_work", "tip_outdoor_lighting", "tip_outdoor_fencing", "tip_working_capital", "tip_contingency", "tip_budget_target", "tip_rent_sqm", "tip_outdoor_rent", "tip_property_tax", "tip_insurance", "tip_electricity", "tip_heating", "tip_water", "tip_maintenance", "tip_cleaning", "tip_marketing", "tip_staff", "tip_loan_pct", "tip_interest_rate", "tip_loan_term", "tip_construction_months", "tip_hold_years", "tip_exit_multiple", "tip_annual_rev_growth", ] @pytest.mark.parametrize("key", TIP_KEYS) def test_key_present_in_english(key): assert key in EN, f"Missing EN translation key: {key}" @pytest.mark.parametrize("key", TIP_KEYS) def test_key_present_in_german(key): assert key in DE, f"Missing DE translation key: {key}" @pytest.mark.parametrize("key", TIP_KEYS) def test_english_value_non_empty(key): assert EN[key], f"Empty EN value for: {key}" @pytest.mark.parametrize("key", TIP_KEYS) def test_german_value_non_empty(key): assert DE[key], f"Empty DE value for: {key}" @pytest.mark.parametrize("key", TIP_KEYS) def test_german_differs_from_english(key): """Every tooltip must be translated, not just copied from English.""" assert EN[key] != DE[key], f"DE translation identical to EN for: {key}" def test_wiz_summary_label_english_value(): assert EN["wiz_summary_label"] == "Live Summary" def test_wiz_summary_label_german_value(): assert DE["wiz_summary_label"] == "Aktuelle Werte"