91 lines
2.1 KiB
TypeScript
91 lines
2.1 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import {
|
|
queueClaimToolInputSchema,
|
|
queueCompleteToolInputSchema,
|
|
queueFailToolInputSchema,
|
|
queueGetToolInputSchema,
|
|
queueHeartbeatToolInputSchema,
|
|
queueListToolInputSchema,
|
|
queueReleaseToolInputSchema,
|
|
queueStatusToolInputSchema,
|
|
} from '../src/mcp-tool-schemas.js';
|
|
|
|
describe('MCP tool schemas', () => {
|
|
it('validates queue_list filters', () => {
|
|
const parsed = queueListToolInputSchema.parse({
|
|
project: 'queue',
|
|
mission: 'phase1',
|
|
status: 'pending',
|
|
});
|
|
|
|
expect(parsed).toEqual({
|
|
project: 'queue',
|
|
mission: 'phase1',
|
|
status: 'pending',
|
|
});
|
|
});
|
|
|
|
it('requires a taskId for queue_get', () => {
|
|
expect(() => queueGetToolInputSchema.parse({})).toThrowError();
|
|
});
|
|
|
|
it('requires positive ttlSeconds for queue_claim', () => {
|
|
expect(() =>
|
|
queueClaimToolInputSchema.parse({
|
|
taskId: 'MQ-007',
|
|
agentId: 'agent-a',
|
|
ttlSeconds: 0,
|
|
}),
|
|
).toThrowError();
|
|
});
|
|
|
|
it('accepts optional fields for queue_heartbeat and queue_release', () => {
|
|
const heartbeat = queueHeartbeatToolInputSchema.parse({
|
|
taskId: 'MQ-007',
|
|
ttlSeconds: 30,
|
|
});
|
|
|
|
const release = queueReleaseToolInputSchema.parse({
|
|
taskId: 'MQ-007',
|
|
});
|
|
|
|
expect(heartbeat).toEqual({
|
|
taskId: 'MQ-007',
|
|
ttlSeconds: 30,
|
|
});
|
|
expect(release).toEqual({
|
|
taskId: 'MQ-007',
|
|
});
|
|
});
|
|
|
|
it('validates queue_complete and queue_fail payloads', () => {
|
|
const complete = queueCompleteToolInputSchema.parse({
|
|
taskId: 'MQ-007',
|
|
agentId: 'agent-a',
|
|
summary: 'done',
|
|
});
|
|
|
|
const fail = queueFailToolInputSchema.parse({
|
|
taskId: 'MQ-007',
|
|
reason: 'boom',
|
|
});
|
|
|
|
expect(complete).toEqual({
|
|
taskId: 'MQ-007',
|
|
agentId: 'agent-a',
|
|
summary: 'done',
|
|
});
|
|
expect(fail).toEqual({
|
|
taskId: 'MQ-007',
|
|
reason: 'boom',
|
|
});
|
|
});
|
|
|
|
it('accepts an empty payload for queue_status', () => {
|
|
const parsed = queueStatusToolInputSchema.parse({});
|
|
|
|
expect(parsed).toEqual({});
|
|
});
|
|
});
|