import 'package:flutter_test/flutter_test.dart'; import 'package:userfront/core/i18n/locale_registry.dart'; import 'package:userfront/core/services/null_check_recovery.dart'; void main() { setUp(() { LocaleRegistry.setSupportedLocaleCodesForTest(['en', 'ko']); }); tearDown(() { LocaleRegistry.resetForTest(); }); test('Null check 오류 + 루트(/)면 선호 로케일 signin으로 복구', () { final target = computeNullCheckRecoveryTarget( exception: Exception('Null check operator used on a null value'), uri: Uri.parse('https://sss.hmac.kr/'), preferredLocaleCode: 'ko', ); expect(target, '/ko/signin'); }); test('Null check 오류 + /ko면 /ko/signin으로 복구', () { final target = computeNullCheckRecoveryTarget( exception: Exception('Null check operator used on a null value'), uri: Uri.parse('https://sss.hmac.kr/ko'), preferredLocaleCode: 'en', ); expect(target, '/ko/signin'); }); test('이미 /ko/signin이면 복구 이동하지 않음', () { final target = computeNullCheckRecoveryTarget( exception: Exception('Null check operator used on a null value'), uri: Uri.parse('https://sss.hmac.kr/ko/signin'), preferredLocaleCode: 'ko', ); expect(target, isNull); }); test('Null check 오류여도 /ko/profile에서는 복구 이동하지 않음', () { final target = computeNullCheckRecoveryTarget( exception: Exception('Null check operator used on a null value'), uri: Uri.parse('https://sss.hmac.kr/ko/profile'), preferredLocaleCode: 'ko', ); expect(target, isNull); }); test('다른 오류 메시지면 복구 이동하지 않음', () { final target = computeNullCheckRecoveryTarget( exception: Exception('Some other error'), uri: Uri.parse('https://sss.hmac.kr/ko'), preferredLocaleCode: 'ko', ); expect(target, isNull); }); }