import 'dart:ui'; import 'package:flutter_test/flutter_test.dart'; import 'package:userfront/core/i18n/toml_asset_loader.dart'; import 'package:userfront/i18n_data.dart'; void main() { test('TomlAssetLoader keeps flat keys for fast startup lookup', () async { const loader = TomlAssetLoader(); final translations = await loader.load( 'assets/translations', const Locale('en'), ); expect(translations['domain.company.baron'], 'Baron'); expect(translations['domain'], isNull); }); test('English signup policy copy stays small enough for first render', () { const sensitiveKeys = [ 'msg.userfront.signup.privacy_full', 'msg.userfront.signup.tos_full', ]; for (final key in sensitiveKeys) { final value = enStrings[key]; expect(value, isNotNull, reason: key); expect(value!.length, lessThan(1024), reason: key); expect(value.contains(r'\\\\'), isFalse, reason: key); } }); test('Korean linked app revoke action label stays unbreakable', () { expect(koStrings['ui.userfront.dashboard.revoke.title'], '연동해지'); }); test( 'TomlAssetLoader excludes non-userfront dictionaries at startup', () async { const loader = TomlAssetLoader(); final translations = await loader.load( 'assets/translations', const Locale('en'), ); expect(translations['ui.admin.nav.api_keys'], isNull); expect(translations['ui.dev.console_title'], isNull); expect( translations['err.userfront.auth_proxy.login_failed'], 'Login failed.', ); expect(translations['ui.userfront.login.action.submit'], 'Sign in'); expect(translations['ui.common.theme_light'], 'Light'); }, ); }