1차 보완(0.1.1+14) 내용 합치기

This commit is contained in:
Sn-Kinos
2026-10-16 17:58:55 +09:00
62 changed files with 2480 additions and 447 deletions
+24 -20
View File
@@ -18,6 +18,7 @@ import 'package:fancake/features/my/settings_screen.dart';
import 'package:fancake/features/my/support_screens.dart';
import 'package:fancake/features/my/tier_screens.dart';
import 'package:fancake/features/my/widgets/profile_card.dart';
import 'package:fancake/features/quest/location_consent.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:fancake/core/push/push_messaging.dart';
@@ -466,6 +467,29 @@ void main() {
expect(find.text('연결'), findsNWidgets(2));
});
testWidgets('위치기반 서비스 동의 — 켜면 동의 창을 거쳐 기록, 끄면 철회 행 (Q-E1 · R02)', (tester) async {
SampleLocationConsent.shared
..value = false
..records.clear();
await pumpWide(tester, SettingsScreen(repository: SampleMyRepository()));
await tester.pump();
final row = find.ancestor(of: find.text('위치기반 서비스 이용 동의'), matching: find.byType(Row));
final toggle = find.descendant(of: row, matching: find.byType(Switch));
await tester.scrollUntilVisible(toggle, 200);
await tester.ensureVisible(toggle);
await tester.pumpAndSettle();
expect(tester.widget<Switch>(toggle).value, isFalse);
await tester.tap(toggle);
await tester.pumpAndSettle();
await tester.tap(find.text('동의'));
await tester.pumpAndSettle();
expect(tester.widget<Switch>(toggle).value, isTrue);
await tester.tap(toggle);
await tester.pumpAndSettle();
expect(tester.widget<Switch>(toggle).value, isFalse);
expect(SampleLocationConsent.shared.records, [true, false]);
});
testWidgets('최신 버전이면 번호 대신 안내를 쓴다', (tester) async {
await pumpWide(tester, SettingsScreen(repository: SampleMyRepository()));
await tester.pump();
@@ -547,26 +571,6 @@ void main() {
});
group('SNS 연동 (F6 · 357:222740 외 3)', () {
test('이메일 전체가 같을 때만 같은 계정으로 본다', () {
// 앞부분만 같고 도메인이 다르면 다른 계정이다.
expect(
sameAccountIdentity('test123@naver.com', 'test123@gmail.com'),
isFalse,
);
expect(
sameAccountIdentity('test123@naver.com', 'other123@gmail.com'),
isFalse,
);
// 대소문자·앞뒤 공백은 정규화한다.
expect(
sameAccountIdentity(' Test123@Naver.com ', 'test123@naver.com'),
isTrue,
);
// 빈 값 · `@` 없는 값은 이메일이 아니다.
expect(sameAccountIdentity('', ''), isFalse);
expect(sameAccountIdentity('test123', 'test123'), isFalse);
});
// 별첨 B v1.4 — *하나의 FANUZU UID 에 복수 소셜 Provider 연결은 허용합니다.*
test('연동 대상은 확정 4종이고 X 는 없다', () {
expect(linkableProviders, const [