diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-02-05 22:49:03 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-02-05 22:49:03 +0900 |
| commit | 504ff72fea72eb3d7c4cf45be1bd9620cb12a796 (patch) | |
| tree | ffc4761292a60c039e8388ac4b4a020bf1c8d401 /src/server/routes/decks.test.ts | |
| parent | 792891c4bb1cce34a4d11bd7fd5388804bff4ca6 (diff) | |
| download | kioku-504ff72fea72eb3d7c4cf45be1bd9620cb12a796.tar.gz kioku-504ff72fea72eb3d7c4cf45be1bd9620cb12a796.tar.zst kioku-504ff72fea72eb3d7c4cf45be1bd9620cb12a796.zip | |
fix(decks): align due card count with study screen limits
The deck list was showing all due cards without applying the
newCardsPerDay limit or review card limit (100), causing a mismatch
with the actual number of cards available in the study screen.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'src/server/routes/decks.test.ts')
| -rw-r--r-- | src/server/routes/decks.test.ts | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/server/routes/decks.test.ts b/src/server/routes/decks.test.ts index d48e494..d0854c1 100644 --- a/src/server/routes/decks.test.ts +++ b/src/server/routes/decks.test.ts @@ -6,6 +6,7 @@ import type { CardRepository, Deck, DeckRepository, + ReviewLogRepository, } from "../repositories/index.js"; import { createDecksRouter } from "./decks.js"; @@ -31,6 +32,8 @@ function createMockCardRepo(): CardRepository { softDeleteByNoteId: vi.fn(), findDueCards: vi.fn(), countDueCards: vi.fn().mockResolvedValue(0), + countDueNewCards: vi.fn().mockResolvedValue(0), + countDueReviewCards: vi.fn().mockResolvedValue(0), findDueCardsWithNoteData: vi.fn(), findDueCardsForStudy: vi.fn(), findDueNewCardsForStudy: vi.fn(), @@ -39,6 +42,13 @@ function createMockCardRepo(): CardRepository { }; } +function createMockReviewLogRepo(): ReviewLogRepository { + return { + create: vi.fn(), + countTodayNewCardReviews: vi.fn().mockResolvedValue(0), + }; +} + const JWT_SECRET = process.env.JWT_SECRET || "test-secret"; async function createTestToken(userId: string): Promise<string> { @@ -82,15 +92,18 @@ describe("GET /api/decks", () => { let app: Hono; let mockDeckRepo: ReturnType<typeof createMockDeckRepo>; let mockCardRepo: ReturnType<typeof createMockCardRepo>; + let mockReviewLogRepo: ReturnType<typeof createMockReviewLogRepo>; let authToken: string; beforeEach(async () => { vi.clearAllMocks(); mockDeckRepo = createMockDeckRepo(); mockCardRepo = createMockCardRepo(); + mockReviewLogRepo = createMockReviewLogRepo(); const decksRouter = createDecksRouter({ deckRepo: mockDeckRepo, cardRepo: mockCardRepo, + reviewLogRepo: mockReviewLogRepo, }); app = new Hono(); app.onError(errorHandler); @@ -142,15 +155,18 @@ describe("POST /api/decks", () => { let app: Hono; let mockDeckRepo: ReturnType<typeof createMockDeckRepo>; let mockCardRepo: ReturnType<typeof createMockCardRepo>; + let mockReviewLogRepo: ReturnType<typeof createMockReviewLogRepo>; let authToken: string; beforeEach(async () => { vi.clearAllMocks(); mockDeckRepo = createMockDeckRepo(); mockCardRepo = createMockCardRepo(); + mockReviewLogRepo = createMockReviewLogRepo(); const decksRouter = createDecksRouter({ deckRepo: mockDeckRepo, cardRepo: mockCardRepo, + reviewLogRepo: mockReviewLogRepo, }); app = new Hono(); app.onError(errorHandler); @@ -255,15 +271,18 @@ describe("GET /api/decks/:id", () => { let app: Hono; let mockDeckRepo: ReturnType<typeof createMockDeckRepo>; let mockCardRepo: ReturnType<typeof createMockCardRepo>; + let mockReviewLogRepo: ReturnType<typeof createMockReviewLogRepo>; let authToken: string; beforeEach(async () => { vi.clearAllMocks(); mockDeckRepo = createMockDeckRepo(); mockCardRepo = createMockCardRepo(); + mockReviewLogRepo = createMockReviewLogRepo(); const decksRouter = createDecksRouter({ deckRepo: mockDeckRepo, cardRepo: mockCardRepo, + reviewLogRepo: mockReviewLogRepo, }); app = new Hono(); app.onError(errorHandler); @@ -325,15 +344,18 @@ describe("PUT /api/decks/:id", () => { let app: Hono; let mockDeckRepo: ReturnType<typeof createMockDeckRepo>; let mockCardRepo: ReturnType<typeof createMockCardRepo>; + let mockReviewLogRepo: ReturnType<typeof createMockReviewLogRepo>; let authToken: string; beforeEach(async () => { vi.clearAllMocks(); mockDeckRepo = createMockDeckRepo(); mockCardRepo = createMockCardRepo(); + mockReviewLogRepo = createMockReviewLogRepo(); const decksRouter = createDecksRouter({ deckRepo: mockDeckRepo, cardRepo: mockCardRepo, + reviewLogRepo: mockReviewLogRepo, }); app = new Hono(); app.onError(errorHandler); @@ -455,15 +477,18 @@ describe("DELETE /api/decks/:id", () => { let app: Hono; let mockDeckRepo: ReturnType<typeof createMockDeckRepo>; let mockCardRepo: ReturnType<typeof createMockCardRepo>; + let mockReviewLogRepo: ReturnType<typeof createMockReviewLogRepo>; let authToken: string; beforeEach(async () => { vi.clearAllMocks(); mockDeckRepo = createMockDeckRepo(); mockCardRepo = createMockCardRepo(); + mockReviewLogRepo = createMockReviewLogRepo(); const decksRouter = createDecksRouter({ deckRepo: mockDeckRepo, cardRepo: mockCardRepo, + reviewLogRepo: mockReviewLogRepo, }); app = new Hono(); app.onError(errorHandler); |
