From 1afb825860cd293b8065d51746f4b23e4e8dab5d Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 12 Feb 2026 14:54:18 +0000 Subject: feat: 学習カード数の上限を撤廃 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit REVIEW_CARDS_LIMIT(復習カード80枚制限)とnewCardsPerDay(1日の新規カード制限) を削除し、期日が来たすべてのカードを制限なく返すように変更。 削除した主な要素: - REVIEW_CARDS_LIMIT定数とカード取得時のlimitパラメータ - newCardsPerDayフィールド(DB schema, 型定義, Zod schema, sync, CRDT) - countDueNewCards, countDueReviewCards, findDueNewCardsForStudy, findDueReviewCardsForStudy(CardRepository) - countTodayNewCardReviews(ReviewLogRepository) - デッキルートからのReviewLogRepository依存 https://claude.ai/code/session_018hrEJ9vg3RPoeAPyEc17gS --- src/server/routes/decks.test.ts | 53 ----------------------------------------- 1 file changed, 53 deletions(-) (limited to 'src/server/routes/decks.test.ts') diff --git a/src/server/routes/decks.test.ts b/src/server/routes/decks.test.ts index d0854c1..f686024 100644 --- a/src/server/routes/decks.test.ts +++ b/src/server/routes/decks.test.ts @@ -6,7 +6,6 @@ import type { CardRepository, Deck, DeckRepository, - ReviewLogRepository, } from "../repositories/index.js"; import { createDecksRouter } from "./decks.js"; @@ -32,23 +31,12 @@ 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(), - findDueReviewCardsForStudy: vi.fn(), updateFSRSFields: vi.fn(), }; } -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 { @@ -69,7 +57,6 @@ function createMockDeck(overrides: Partial = {}): Deck { userId: "user-uuid-123", name: "Test Deck", description: "Test description", - newCardsPerDay: 20, createdAt: new Date("2024-01-01"), updatedAt: new Date("2024-01-01"), deletedAt: null, @@ -92,18 +79,15 @@ describe("GET /api/decks", () => { let app: Hono; let mockDeckRepo: ReturnType; let mockCardRepo: ReturnType; - let mockReviewLogRepo: ReturnType; 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); @@ -155,18 +139,15 @@ describe("POST /api/decks", () => { let app: Hono; let mockDeckRepo: ReturnType; let mockCardRepo: ReturnType; - let mockReviewLogRepo: ReturnType; 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); @@ -194,7 +175,6 @@ describe("POST /api/decks", () => { userId: "user-uuid-123", name: "New Deck", description: undefined, - newCardsPerDay: 20, }); }); @@ -202,7 +182,6 @@ describe("POST /api/decks", () => { const newDeck = createMockDeck({ name: "Full Deck", description: "Full description", - newCardsPerDay: 30, }); vi.mocked(mockDeckRepo.create).mockResolvedValue(newDeck); @@ -215,7 +194,6 @@ describe("POST /api/decks", () => { body: JSON.stringify({ name: "Full Deck", description: "Full description", - newCardsPerDay: 30, }), }); @@ -226,7 +204,6 @@ describe("POST /api/decks", () => { userId: "user-uuid-123", name: "Full Deck", description: "Full description", - newCardsPerDay: 30, }); }); @@ -271,18 +248,15 @@ describe("GET /api/decks/:id", () => { let app: Hono; let mockDeckRepo: ReturnType; let mockCardRepo: ReturnType; - let mockReviewLogRepo: ReturnType; 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); @@ -344,18 +318,15 @@ describe("PUT /api/decks/:id", () => { let app: Hono; let mockDeckRepo: ReturnType; let mockCardRepo: ReturnType; - let mockReviewLogRepo: ReturnType; 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); @@ -405,27 +376,6 @@ describe("PUT /api/decks/:id", () => { expect(body.deck?.description).toBe("New description"); }); - it("updates newCardsPerDay", async () => { - const updatedDeck = createMockDeck({ newCardsPerDay: 50 }); - vi.mocked(mockDeckRepo.update).mockResolvedValue(updatedDeck); - - const res = await app.request( - "/api/decks/00000000-0000-0000-0000-000000000000", - { - method: "PUT", - headers: { - Authorization: `Bearer ${authToken}`, - "Content-Type": "application/json", - }, - body: JSON.stringify({ newCardsPerDay: 50 }), - }, - ); - - expect(res.status).toBe(200); - const body = (await res.json()) as DeckResponse; - expect(body.deck?.newCardsPerDay).toBe(50); - }); - it("returns 404 for non-existent deck", async () => { vi.mocked(mockDeckRepo.update).mockResolvedValue(undefined); @@ -477,18 +427,15 @@ describe("DELETE /api/decks/:id", () => { let app: Hono; let mockDeckRepo: ReturnType; let mockCardRepo: ReturnType; - let mockReviewLogRepo: ReturnType; 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); -- cgit v1.3-1-g0d28