39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import {
|
|
CreateNoteDraftToolInputSchema,
|
|
NotesMcpToolDefinitions,
|
|
SearchNotesToolInputSchema,
|
|
} from './note-tool-contracts.js';
|
|
|
|
describe('note MCP tool contracts', () => {
|
|
it('defines the expected core tool names', () => {
|
|
expect(NotesMcpToolDefinitions.list.name).toBe('notes.notes.list');
|
|
expect(NotesMcpToolDefinitions.get.name).toBe('notes.notes.get');
|
|
expect(NotesMcpToolDefinitions.search.name).toBe('notes.notes.search');
|
|
expect(NotesMcpToolDefinitions.createDraft.name).toBe('notes.notes.create_draft');
|
|
});
|
|
|
|
it('validates search input', () => {
|
|
const parsed = SearchNotesToolInputSchema.safeParse({
|
|
workspaceId: 'ws_1',
|
|
query: 'retention policy',
|
|
});
|
|
|
|
expect(parsed.success).toBe(true);
|
|
});
|
|
|
|
it('supports dry-run create draft input', () => {
|
|
const parsed = CreateNoteDraftToolInputSchema.safeParse({
|
|
workspaceId: 'ws_1',
|
|
title: 'Draft note',
|
|
body: 'Body',
|
|
dryRun: true,
|
|
});
|
|
|
|
expect(parsed.success).toBe(true);
|
|
if (parsed.success) {
|
|
expect(parsed.data.dryRun).toBe(true);
|
|
}
|
|
});
|
|
});
|