From c5329f1ccc8c0f242fba4151ed4784f610bc01c4 Mon Sep 17 00:00:00 2001 From: altair823 Date: Fri, 1 May 2026 21:09:04 +0900 Subject: [PATCH] refactor(test): replace as-cast with discriminant narrowing (review T7 I-1) --- tests/unit/TelemetryService.test.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/unit/TelemetryService.test.ts b/tests/unit/TelemetryService.test.ts index fa47a83..5a3198c 100644 --- a/tests/unit/TelemetryService.test.ts +++ b/tests/unit/TelemetryService.test.ts @@ -146,7 +146,8 @@ describe('TelemetryService.readAllRecent', () => { const svc = new TelemetryService(dir, () => new Date('2026-05-01T12:00:00Z'), 14); const events = await svc.readAllRecent(); expect(events).toHaveLength(3); - expect(events.map((e) => (e.payload as { noteId: string }).noteId)).toEqual(['a', 'b', 'b']); + // discriminant narrowing — empty_trash 같은 noteId 없는 kind 가 섞이면 명시적으로 실패 + expect(events.map((e) => e.kind === 'empty_trash' ? null : e.payload.noteId)).toEqual(['a', 'b', 'b']); }); it('skips malformed lines (silent — invariant)', async () => { @@ -157,7 +158,9 @@ describe('TelemetryService.readAllRecent', () => { const svc = new TelemetryService(dir, () => new Date('2026-05-01T12:00:00Z'), 14); const events = await svc.readAllRecent(); expect(events).toHaveLength(1); - expect((events[0]!.payload as { noteId: string }).noteId).toBe('a'); + const ev = events[0]!; + expect(ev.kind).toBe('capture'); + if (ev.kind !== 'empty_trash') expect(ev.payload.noteId).toBe('a'); }); it('returns [] when dir missing', async () => {