라이브 티커 · 갤럭시 검색 색인 · 주간 랭킹 스냅샷 · 연속 ZAP 상한 · 가입 행성 Zap · 성운 목표 · 랭킹 갱신 안내 · 행성 터치 반응

This commit is contained in:
Sn-Kinos
2026-10-05 22:38:42 +09:00
parent 000c058097
commit 4bb92c2ee7
44 changed files with 727 additions and 78 deletions
+15 -4
View File
@@ -104,7 +104,7 @@ void main() {
expect(repository.counts, [2, 2]);
repository.replies.last.complete(const ZapResult(txId: 'home-confirmed', balanceAfter: 900, contributedPop: 37));
await tester.pump();
expect(find.text('37 POP 기여 완료'), findsOneWidget);
expect(find.textContaining('37 POP 이 '), findsOneWidget);
expect(tester.widget<ZapButton>(find.byType(ZapButton)).myPop, 900);
expect(tester.takeException(), isNull);
await tester.pumpWidget(const SizedBox());
@@ -135,6 +135,17 @@ void main() {
expect(tester.binding.transientCallbackCount, 0);
});
test('갤럭시 Zap 은 고른 행성이 가입 팬덤이면 그 행성, 아니면 대표 행성으로 간다 (10/3 #10)', () {
const mine = PlanetNode(id: 'a', name: 'A', rank: 1, fpi: 1, members: 1, online: 1, isMine: true);
const joined = PlanetNode(id: 'b', name: 'B', rank: 2, fpi: 1, members: 1, online: 1);
const other = PlanetNode(id: 'c', name: 'C', rank: 3, fpi: 1, members: 1, online: 1);
const snap = GalaxySnapshot(planets: [mine, joined, other], myPop: 0, joinedIds: {'a', 'b'});
expect(snap.zapTargetFor(joined)?.id, 'b');
expect(snap.zapTargetFor(other)?.id, 'a');
expect(snap.zapTargetFor(null)?.id, 'a');
expect(snap.rankingView.zapTargetFor(joined)?.id, 'b');
});
test('기여 결과는 현재 단가가 아니라 서버가 확정한 차감 lot 합계다', () async {
final db = FakeFirebaseFirestore();
await db.doc('config/policy').set({'zapPop': 10});
@@ -156,14 +167,14 @@ void main() {
);
repository.replies.last.complete(receipt);
await tester.pump();
expect(find.text('37 POP 기여 완료'), findsOneWidget);
expect(find.textContaining('37 POP 이 '), findsOneWidget);
await tester.pump(const Duration(seconds: 2));
expect(find.text('37 POP 기여 완료'), findsNothing);
expect(find.textContaining('37 POP 이 '), findsNothing);
await tester.tap(find.byType(ZapButton));
await tester.pump(const Duration(milliseconds: 500));
repository.replies.last.complete(receipt);
await tester.pump();
expect(find.text('37 POP 기여 완료'), findsNothing);
expect(find.textContaining('37 POP 이 '), findsNothing);
});
testWidgets('ZAP 옵션은 2초 전에 열리지 않고 길게 누르면 차감하지 않는다', (tester) async {