로그아웃 SDK 대기 제거 · 온보딩 국가 시트 · 프로필 머리줄

This commit is contained in:
Sn-Kinos
2026-10-06 04:47:37 +09:00
parent 976e569a56
commit 40756d5c86
21 changed files with 277 additions and 43 deletions
+38 -3
View File
@@ -3,12 +3,15 @@ import 'dart:async';
import 'package:fancake/app.dart';
import 'package:fancake/core/data/repositories.dart';
import 'package:fancake/core/firebase/firebase_boot.dart';
import 'package:fancake/core/i18n/app_locale.dart';
import 'package:fancake/features/planet/planet_data.dart' show countryName;
import 'package:fancake/features/auth/auth.dart';
import 'package:fancake/features/auth/auth_repository.dart';
import 'package:fancake/features/auth/login_screen.dart';
import 'package:fancake/features/auth/onboarding_data.dart';
import 'package:fancake/features/auth/onboarding_screens.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:shared_preferences/shared_preferences.dart';
@@ -57,7 +60,9 @@ void main() {
expect(find.byType(NavigationBar), findsOneWidget);
});
testWidgets('동의한 계정은 셸로 가는 동안 약관 화면이 한 프레임도 그려지지 않는다 — 10/6 콜드 스타트 깜빡임', (tester) async {
testWidgets('동의한 계정은 셸로 가는 동안 약관 화면이 한 프레임도 그려지지 않는다 — 10/6 콜드 스타트 깜빡임', (
tester,
) async {
// 서버 판정이 몇 프레임 걸리는 실기기처럼 늦춘다.
final (auth, _) = await boot(
tester,
@@ -148,8 +153,11 @@ void main() {
await tester.tap(find.text('완료'));
await tester.pumpAndSettle();
await tester.tap(find.text('국가/지역').first);
await tester.tap(
find.ancestor(of: find.text('거주 국가/지역'), matching: find.byType(InkWell)),
);
await tester.pumpAndSettle();
expect(find.text('거주 국가/지역 선택'), findsOneWidget);
await tester.scrollUntilVisible(
find.text('대한민국'),
300,
@@ -210,7 +218,34 @@ void main() {
await auth.signIn(SocialProvider.google, signUp: true);
await tester.pumpAndSettle();
expect(repo.agreed, contains('marketing'));
expect(find.text('프로필을 설정해 주세요'), findsOneWidget);
expect(find.text('거주 국가/지역'), findsOneWidget); // ③ 프로필
expect(find.text('회원가입'), findsOneWidget); // 511:86825 머리줄 가운데 타이틀
});
test('국가명은 OS 이름 · OS 정렬 순서 — 이름 없는 나라도 코드로 보이지 않는다', () async {
TestWidgetsFlutterBinding.ensureInitialized();
const channel = MethodChannel('kr.co.fanuzu.app/locale');
final messenger =
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger;
String? asked;
messenger.setMockMethodCallHandler(channel, (call) async {
asked = (call.arguments as Map)['locale'] as String;
return [
['GH', '가나'],
['AD', '안도라'],
['KR', '대한민국'],
];
});
addTearDown(() {
messenger.setMockMethodCallHandler(channel, null);
platformCountryNames = const {};
});
await loadCountryNames(const Locale('ko'));
expect(asked, 'ko');
expect(countryName('AD'), '안도라');
expect(sortedCountries().take(3), ['GH', 'AD', 'KR']);
expect(sortedCountries().length, isoCountries.length);
});
testWidgets('첫 실행은 소개 3장 — 건너뛰기를 눌러도 로그인 화면', (tester) async {