aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/server/routes/decks.test.ts
diff options
context:
space:
mode:
authornsfisis <54318333+nsfisis@users.noreply.github.com>2026-01-12 18:09:14 +0900
committerGitHub <noreply@github.com>2026-01-12 18:09:14 +0900
commit188c49e6ae0dfa0af052a001bc40c26d448b1583 (patch)
treef0cebd927c2292a40f123a694c6aa561768ad7a3 /src/server/routes/decks.test.ts
parentf8e4be9b36a16969ac53bd9ce12ce8064be10196 (diff)
parent1732c543f4bc98ec6a4c7ea13c3e4762933421d8 (diff)
downloadkioku-188c49e6ae0dfa0af052a001bc40c26d448b1583.tar.gz
kioku-188c49e6ae0dfa0af052a001bc40c26d448b1583.tar.zst
kioku-188c49e6ae0dfa0af052a001bc40c26d448b1583.zip
Merge pull request #9 from nsfisis/claude/show-daily-card-count-6dJ6tHEADmain
Display daily card count on deck list page
Diffstat (limited to 'src/server/routes/decks.test.ts')
-rw-r--r--src/server/routes/decks.test.ts59
1 files changed, 53 insertions, 6 deletions
diff --git a/src/server/routes/decks.test.ts b/src/server/routes/decks.test.ts
index 8f5be9d..55aca2d 100644
--- a/src/server/routes/decks.test.ts
+++ b/src/server/routes/decks.test.ts
@@ -2,7 +2,11 @@ import { Hono } from "hono";
import { sign } from "hono/jwt";
import { beforeEach, describe, expect, it, vi } from "vitest";
import { errorHandler } from "../middleware/index.js";
-import type { Deck, DeckRepository } from "../repositories/index.js";
+import type {
+ CardRepository,
+ Deck,
+ DeckRepository,
+} from "../repositories/index.js";
import { createDecksRouter } from "./decks.js";
function createMockDeckRepo(): DeckRepository {
@@ -15,6 +19,24 @@ function createMockDeckRepo(): DeckRepository {
};
}
+function createMockCardRepo(): CardRepository {
+ return {
+ findByDeckId: vi.fn(),
+ findById: vi.fn(),
+ findByIdWithNoteData: vi.fn(),
+ findByNoteId: vi.fn(),
+ create: vi.fn(),
+ update: vi.fn(),
+ softDelete: vi.fn(),
+ softDeleteByNoteId: vi.fn(),
+ findDueCards: vi.fn(),
+ countDueCards: vi.fn().mockResolvedValue(0),
+ findDueCardsWithNoteData: vi.fn(),
+ findDueCardsForStudy: vi.fn(),
+ updateFSRSFields: vi.fn(),
+ };
+}
+
const JWT_SECRET = process.env.JWT_SECRET || "test-secret";
async function createTestToken(userId: string): Promise<string> {
@@ -57,12 +79,17 @@ interface DeckResponse {
describe("GET /api/decks", () => {
let app: Hono;
let mockDeckRepo: ReturnType<typeof createMockDeckRepo>;
+ let mockCardRepo: ReturnType<typeof createMockCardRepo>;
let authToken: string;
beforeEach(async () => {
vi.clearAllMocks();
mockDeckRepo = createMockDeckRepo();
- const decksRouter = createDecksRouter({ deckRepo: mockDeckRepo });
+ mockCardRepo = createMockCardRepo();
+ const decksRouter = createDecksRouter({
+ deckRepo: mockDeckRepo,
+ cardRepo: mockCardRepo,
+ });
app = new Hono();
app.onError(errorHandler);
app.route("/api/decks", decksRouter);
@@ -112,12 +139,17 @@ describe("GET /api/decks", () => {
describe("POST /api/decks", () => {
let app: Hono;
let mockDeckRepo: ReturnType<typeof createMockDeckRepo>;
+ let mockCardRepo: ReturnType<typeof createMockCardRepo>;
let authToken: string;
beforeEach(async () => {
vi.clearAllMocks();
mockDeckRepo = createMockDeckRepo();
- const decksRouter = createDecksRouter({ deckRepo: mockDeckRepo });
+ mockCardRepo = createMockCardRepo();
+ const decksRouter = createDecksRouter({
+ deckRepo: mockDeckRepo,
+ cardRepo: mockCardRepo,
+ });
app = new Hono();
app.onError(errorHandler);
app.route("/api/decks", decksRouter);
@@ -220,12 +252,17 @@ describe("POST /api/decks", () => {
describe("GET /api/decks/:id", () => {
let app: Hono;
let mockDeckRepo: ReturnType<typeof createMockDeckRepo>;
+ let mockCardRepo: ReturnType<typeof createMockCardRepo>;
let authToken: string;
beforeEach(async () => {
vi.clearAllMocks();
mockDeckRepo = createMockDeckRepo();
- const decksRouter = createDecksRouter({ deckRepo: mockDeckRepo });
+ mockCardRepo = createMockCardRepo();
+ const decksRouter = createDecksRouter({
+ deckRepo: mockDeckRepo,
+ cardRepo: mockCardRepo,
+ });
app = new Hono();
app.onError(errorHandler);
app.route("/api/decks", decksRouter);
@@ -285,12 +322,17 @@ describe("GET /api/decks/:id", () => {
describe("PUT /api/decks/:id", () => {
let app: Hono;
let mockDeckRepo: ReturnType<typeof createMockDeckRepo>;
+ let mockCardRepo: ReturnType<typeof createMockCardRepo>;
let authToken: string;
beforeEach(async () => {
vi.clearAllMocks();
mockDeckRepo = createMockDeckRepo();
- const decksRouter = createDecksRouter({ deckRepo: mockDeckRepo });
+ mockCardRepo = createMockCardRepo();
+ const decksRouter = createDecksRouter({
+ deckRepo: mockDeckRepo,
+ cardRepo: mockCardRepo,
+ });
app = new Hono();
app.onError(errorHandler);
app.route("/api/decks", decksRouter);
@@ -410,12 +452,17 @@ describe("PUT /api/decks/:id", () => {
describe("DELETE /api/decks/:id", () => {
let app: Hono;
let mockDeckRepo: ReturnType<typeof createMockDeckRepo>;
+ let mockCardRepo: ReturnType<typeof createMockCardRepo>;
let authToken: string;
beforeEach(async () => {
vi.clearAllMocks();
mockDeckRepo = createMockDeckRepo();
- const decksRouter = createDecksRouter({ deckRepo: mockDeckRepo });
+ mockCardRepo = createMockCardRepo();
+ const decksRouter = createDecksRouter({
+ deckRepo: mockDeckRepo,
+ cardRepo: mockCardRepo,
+ });
app = new Hono();
app.onError(errorHandler);
app.route("/api/decks", decksRouter);