app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

commit 7d94a19fb82ef14691e622490916b04587267e83
parent 51043d1dc546a39c5c032c2e9a14e79c002332e1
Author: triesap <tyson@radroots.org>
Date:   Sat, 18 Apr 2026 04:36:45 +0000

tests: cover shell reset copy contract

Diffstat:
Mcrates/launchers/desktop/src/source_guards.rs | 23+++++++++++++++++++++++
Mcrates/shared/i18n/src/lib.rs | 34++++++++++++++++++++++++++++++++++
2 files changed, 57 insertions(+), 0 deletions(-)

diff --git a/crates/launchers/desktop/src/source_guards.rs b/crates/launchers/desktop/src/source_guards.rs @@ -20,6 +20,17 @@ const ALLOWED_WINDOW_LITERALS: &[&str] = &[ "settings-use-nip05", ]; +const REQUIRED_WINDOW_COPY_KEYS: &[&str] = &[ + "AppTextKey::HomeSetupCreateAccountAction", + "AppTextKey::SettingsAccountNoSelectionTitle", + "AppTextKey::SettingsAccountNoSelectionBody", + "AppTextKey::SettingsAccountStatusLoggedOut", + "AppTextKey::SettingsAccountActivationInactive", + "AppTextKey::SettingsAccountAddAction", + "AppTextKey::SettingsAccountLogOutAction", + "AppTextKey::SettingsAccountOpenWorkspaceAction", +]; + #[test] fn desktop_menu_source_uses_localized_copy_paths() { assert_eq!( @@ -42,6 +53,18 @@ fn desktop_window_source_uses_localized_copy_paths() { ); } +#[test] +fn desktop_window_source_keeps_shell_reset_copy_keyed() { + let source = include_str!("window.rs"); + + for copy_key in REQUIRED_WINDOW_COPY_KEYS { + assert!( + source.contains(copy_key), + "desktop window is missing localized copy key {copy_key}" + ); + } +} + fn extract_string_literals(source: &str) -> BTreeSet<&str> { let mut literals = BTreeSet::new(); let bytes = source.as_bytes(); diff --git a/crates/shared/i18n/src/lib.rs b/crates/shared/i18n/src/lib.rs @@ -134,6 +134,40 @@ mod tests { } #[test] + fn english_shell_reset_copy_matches_setup_and_utility_contract() { + assert_eq!( + app_text(AppTextKey::HomeSetupCreateAccountAction), + "Create account" + ); + assert_eq!(app_text(AppTextKey::SettingsTitle), "Radroots Settings"); + assert_eq!( + app_text(AppTextKey::SettingsAccountNoSelectionTitle), + "No account selected" + ); + assert_eq!( + app_text(AppTextKey::SettingsAccountNoSelectionBody), + "Add a local account to start using Radroots on this device." + ); + assert_eq!( + app_text(AppTextKey::SettingsAccountStatusLoggedOut), + "Logged Out" + ); + assert_eq!( + app_text(AppTextKey::SettingsAccountActivationInactive), + "Not activated" + ); + assert_eq!( + app_text(AppTextKey::SettingsAccountAddAction), + "Add Account..." + ); + assert_eq!(app_text(AppTextKey::SettingsAccountLogOutAction), "Log Out"); + assert_eq!( + app_text(AppTextKey::SettingsAccountOpenWorkspaceAction), + "Open Workspace..." + ); + } + + #[test] fn host_locale_negotiation_reduces_to_supported_base_locale() { assert_eq!(resolve_locale_from_host("en_US.UTF-8"), "en"); assert_eq!(resolve_locale_from_host("en-GB"), "en");