라이브 티커 · 갤럭시 검색 색인 · 주간 랭킹 스냅샷 · 연속 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
+6 -5
View File
@@ -190,7 +190,8 @@ describe('분산 카운터 — 카운트 유실 0 (별첨 1 ① 예외 처리)',
expect(summary.get('defense')).toBe(60);
expect(summary.get('defenseCount')).toBe(20);
expect(await logCount()).toBe(20);
expect(await tickerCount()).toBe(20);
// 티커는 사람당 합류 1회 — 개별 Shake 를 방송하지 않는다(FX §5.1).
expect(await tickerCount()).toBe(2);
});
});
@@ -263,8 +264,8 @@ describe('서버 검증 — 단말 값을 믿지 않는다 (별첨 1 ②)', () =
});
expect(third.accepted).toBe(0);
expect((await shardSum()).defense).toBe(60);
// 받아들인 것이 없으면 티커에도 올리지 않는다 — 빈 참여가 흐르면 안 된다.
expect(await tickerCount()).toBe(2);
// 티커는 합류 1회뿐이다 — 묶음마다 · 빈 참여마다 흐르지 않는다(FX §1.1 · §5.1).
expect(await tickerCount()).toBe(1);
});
it('속도 제한보다 빠른 연속 호출을 끊는다', async () => {
@@ -301,7 +302,7 @@ describe('서버 검증 — 단말 값을 믿지 않는다 (별첨 1 ②)', () =
});
describe('티커 이벤트 — Global Ticker 모양 (별첨 B)', () => {
it('참여마다 종류·닉네임·참여량·우선순위·이동처를 남긴다', async () => {
it('합류할 때 종류·닉네임·우선순위·이동처를 남기고 Shake 횟수는 싣지 않는다', async () => {
await seed();
await defendEclipse({
uid: A, fandomId: FANDOM, eclipseId: ECLIPSE, clientSeq: 't1', shakes: 7,
@@ -314,7 +315,7 @@ describe('티커 이벤트 — Global Ticker 모양 (별첨 B)', () => {
// 다른 종류(Artist Hot Time · Hero Gift · Campaign · 공지)가 뒤에 들어올 자리다.
expect(event.get('kind')).toBe('eclipse_defense');
expect(event.get('nickname')).toBe('아미보이');
expect(event.get('defense')).toBe(7);
expect(event.get('defense')).toBeUndefined();
expect(event.get('eclipseId')).toBe(ECLIPSE);
expect(typeof event.get('priority')).toBe('number');
expect(event.get('linkTo')).toBe(`/eclipse/${FANDOM}/${ECLIPSE}`);