//! Menu routing integration tests.
//!
//! Validates: all MenuAction variants registered, no collisions,
//! bidirectional lookup, and i18n keys resolve in every locale.

use bds_core::i18n::{UiLocale, translate};
use bds_ui::platform::menu::MenuAction;

#[test]
fn all_menu_actions_have_i18n_keys() {
    for &action in MenuAction::ALL {
        let key = action.i18n_key();
        assert!(key.starts_with("menu.item."), "bad key prefix: {key}");
    }
}

#[test]
fn all_menu_actions_translate_in_all_locales() {
    for locale in UiLocale::all() {
        for &action in MenuAction::ALL {
            let key = action.i18n_key();
            let label = translate(*locale, key);
            assert_ne!(
                label, key,
                "missing translation for {key} in locale {locale}"
            );
        }
    }
}

#[test]
fn no_duplicate_i18n_keys() {
    let mut keys = std::collections::HashSet::new();
    for &action in MenuAction::ALL {
        let key = action.i18n_key();
        assert!(keys.insert(key), "duplicate i18n key: {key}");
    }
}
