- backend: POST /notes/:id/summarize — calls extraction-service, stores summary artifact - backend: GET /notes/export — JSON + Markdown format support - backend: extraction-client.ts for extraction-service integration - backend: 4 new integration tests (summarize, export JSON, export MD, invalid format) - web: summarizeNote + exportNotes client functions - web: Summarize button on note detail page - web: Export Notes button on workspaces page - web: exclude e2e/ from vitest config - Total: 80 backend, 14 web, 23 mobile = 117 tests
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
import { noteRoutes } from './routes.js';
|
|
|
|
const {
|
|
extractAuthMock,
|
|
listNotesMock,
|
|
getNoteMock,
|
|
createNoteMock,
|
|
updateNoteMock,
|
|
} = vi.hoisted(() => ({
|
|
extractAuthMock: vi.fn(async () => ({ sub: 'user_1' })),
|
|
listNotesMock: vi.fn(async () => ({ items: [], total: 0 })),
|
|
getNoteMock: vi.fn(async () => null),
|
|
createNoteMock: vi.fn(async (doc: unknown) => doc),
|
|
updateNoteMock: vi.fn(async () => null),
|
|
}));
|
|
|
|
vi.mock('../../lib/auth.js', () => ({ extractAuth: extractAuthMock }));
|
|
vi.mock('../../lib/product-config.js', () => ({ PRODUCT_ID: 'notelett' }));
|
|
vi.mock('../../lib/extraction-client.js', () => ({ extractFromText: vi.fn(async () => ({ summary: 'test' })) }));
|
|
vi.mock('../note-artifacts/repository.js', () => ({ createNoteArtifact: vi.fn(async (doc: unknown) => doc) }));
|
|
vi.mock('./repository.js', () => ({
|
|
listNotes: listNotesMock,
|
|
getNote: getNoteMock,
|
|
createNote: createNoteMock,
|
|
updateNote: updateNoteMock,
|
|
}));
|
|
|
|
describe('noteRoutes', () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
it('registers route handlers', async () => {
|
|
const app = {
|
|
get: vi.fn(),
|
|
post: vi.fn(),
|
|
patch: vi.fn(),
|
|
};
|
|
|
|
await noteRoutes(app as never);
|
|
|
|
expect(app.get).toHaveBeenCalledTimes(4);
|
|
expect(app.post).toHaveBeenCalledTimes(4);
|
|
expect(app.patch).toHaveBeenCalledTimes(1);
|
|
});
|
|
});
|