Figma 설명 프레임 반영 — 로그인·온보딩·스플래시 · HOME · GALAXY · 퀘스트·이클립스·알림
This commit is contained in:
@@ -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);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/// 지갑이 서버 값으로 바뀐 표본 — 생성 예치 · 수수료 뒤 헤더가 다시 맞는가.
|
||||
|
||||
Reference in New Issue
Block a user