use teksilo_app::TeksiloAppBuilder;
use teksilo_i18n::I18nConfig;
use teksilo_i18n::lit;
use teksilo_widgets::{Snackbar, StatusBar};
#[test]
fn framework_locales_available_when_registered() {
let app = TeksiloAppBuilder::new()
.i18n(
I18nConfig::test_only("en-US", &[])
.framework_locales(teksilo_widgets::framework_locales()),
)
.build_headless();
let resolved = teksilo_i18n::resolve_message_widget("a11y-status-bar-name", &[]);
assert_eq!(resolved, "Status");
let _ = app;
}
#[test]
fn status_bar_a11y_name_resolves_via_framework_bundle() {
use teksilo_canvas::SizeProposal;
let mut app = TeksiloAppBuilder::new()
.i18n(
I18nConfig::test_only("en-US", &[])
.framework_locales(teksilo_widgets::framework_locales()),
)
.build_headless();
let sb = app.tree.add(StatusBar::new());
app.tree.layout(SizeProposal::exact(400.0, 50.0));
let info = app.tree.accessibility_node(sb);
assert_eq!(info.name(), Some("Status"));
}
#[test]
fn snackbar_a11y_name_resolves_via_framework_bundle() {
use teksilo_canvas::SizeProposal;
use teksilo_core::widget::{LayoutContext, Widget};
#[derive(Debug)]
struct Noop;
impl Widget for Noop {
fn layout_response(
&self,
proposal: SizeProposal,
_ctx: &LayoutContext,
) -> teksilo_core::widget::LayoutResponse {
proposal.resolve(40.0, 20.0).into()
}
}
let mut app = TeksiloAppBuilder::new()
.i18n(
I18nConfig::test_only("en-US", &[])
.framework_locales(teksilo_widgets::framework_locales()),
)
.build_headless();
app.tree.add(Snackbar::new(lit!("Trigger")).content(Noop));
app.tree
.layout(teksilo_canvas::SizeProposal::exact(400.0, 300.0));
let resolved = teksilo_i18n::resolve_message_widget("a11y-snackbar-name", &[]);
assert_eq!(resolved, "Snackbar");
}
#[test]
fn tr_widget_falls_back_to_compile_time_literal_without_manager() {
teksilo_i18n::thread_local::clear();
let resolved = teksilo_i18n::resolve_message_widget("a11y-dialog-name", &[]);
assert_eq!(resolved, "a11y-dialog-name");
}