Figma 설명 프레임 반영 — 로그인·온보딩·스플래시 · HOME · GALAXY · 퀘스트·이클립스·알림

This commit is contained in:
Sn-Kinos
2026-10-06 03:03:20 +09:00
parent 64825e72b0
commit ecf5998725
77 changed files with 2703 additions and 640 deletions
+50 -7
View File
@@ -69,7 +69,7 @@ void main() {
final repo = _AdRepo();
await watchAd(tester, repo);
expect(repo.claimed, ['imp-1']);
expect(find.text('광고 추가 보상 +20 POP'), findsOneWidget);
expect(find.text('광고 추가 보상 +20 기여 POP'), findsOneWidget);
});
testWidgets('불러오지 못하면 기본 보상만 받는다', (tester) async {
@@ -193,8 +193,11 @@ void main() {
}
});
test('완료 탭은 진행 완료와 보상 완료를 함께 받는다', () {
expect(QuestTab.done.accepts(_stage(card, QuestStage.completed)), isTrue);
// 명세 `518:88405` — 진행완료는 진행중 탭, 보상완료만 완료 탭.
test('진행완료는 진행중 탭, 보상완료만 완료 탭이 받는다', () {
expect(QuestTab.inProgress.accepts(_stage(card, QuestStage.completed)), isTrue);
expect(QuestTab.inProgress.accepts(_stage(card, QuestStage.inProgress)), isTrue);
expect(QuestTab.done.accepts(_stage(card, QuestStage.completed)), isFalse);
expect(QuestTab.done.accepts(_stage(card, QuestStage.rewarded)), isTrue);
expect(QuestTab.done.accepts(_stage(card, QuestStage.inProgress)), isFalse);
});
@@ -328,10 +331,10 @@ void main() {
// 시청 후 대기(482:15084)는 지급이 끝나면 걷힌다.
expect(find.byType(QuestAdWarpScreen), findsNothing);
expect(find.byType(QuestRewardScreen), findsOneWidget);
// 별첨 B **B-28** 이 배수형(×2/×3)을 철회했다. 기본 보상과 광고 추가 보상은
// 별개 원장 행이고, 화면은 **서버가 돌려준 지급액만** 띄운다(`fnAdReward.rewarded`).
expect(find.text('+10 받았어요!'), findsOneWidget);
expect(find.text('광고 추가 보상 +10 POP'), findsOneWidget);
// 기본 보상과 광고 추가 보상은 별개 원장 행이고, 화면은 **서버가 돌려준 지급액만** 띄운다
// (`fnAdReward.rewarded`). 운영 Quest 는 명세 `518:88685` 대로 둘의 합계(× 배수)를 크게 보인다.
expect(find.text('+20 받았어요!'), findsOneWidget);
expect(find.text('광고 추가 보상 +10 기여 POP'), findsOneWidget);
});
testWidgets('스트리밍은 무보상 참여로 열려 있고 보상 · 광고 화면 없이 참여만 알린다(C-04)', (tester) async {
@@ -530,6 +533,46 @@ void main() {
}
}
});
group('Figma 설명 프레임 대조 (2026-10-06)', () {
QuestCard ugc({int participants = 0, int? capacity, QuestStage stage = QuestStage.notStarted}) =>
QuestCard(
id: 'u', title: 't', categoryName: 'c', author: QuestAuthor.user,
stage: stage, goal: 1, progress: 0, rewardPop: 10,
participants: participants, capacity: capacity,
);
// 명세 `523:18176` 퀘스트 종료 시점 1 — 참여 인원 충족 시 종료.
test('사용자 퀘스트는 모집 인원이 차면 마감이다', () {
expect(questFull(ugc(participants: 5, capacity: 5)), isTrue);
expect(questFull(ugc(participants: 4, capacity: 5)), isFalse);
expect(questFull(ugc(participants: 3)), isFalse);
});
// 명세 `518:88395` — 카테고리 값은 등록된 분류(건강 · 커뮤니티 …)다. 활동명(걷기)이 아니다.
test('카드 카테고리는 활동이 아니라 분류 이름이다', () {
expect(QuestType.steps.category, '건강');
expect(QuestType.community.category, '커뮤니티');
expect(QuestType.vote.category, '행성 활동');
});
// 명세 `518:88685` — 광고 시청 POP = 보상 POP × 배수. 운영 Quest 는 합계를 크게 보인다.
testWidgets('운영 퀘스트는 광고를 보면 기본 + 증분 합계를 띄운다', (tester) async {
const card = QuestCard(
id: 'a', title: 't', categoryName: 'c', author: QuestAuthor.admin,
stage: QuestStage.completed, goal: 1, progress: 1, rewardPop: 20, participants: 0,
);
await pumpWide(
tester,
const QuestRewardScreen(
detail: QuestDetail(card: card, imageLabel: '', description: ''),
reward: QuestReward(rewardedPop: 20, balanceAfter: 0),
adBonusPop: 20,
),
);
expect(find.text('+40 받았어요!'), findsOneWidget);
expect(find.text('광고 추가 보상 +20 기여 POP'), findsOneWidget);
});
});
}
/// 지갑이 서버 값으로 바뀐 표본 — 생성 예치 · 수수료 뒤 헤더가 다시 맞는가.