51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
|
|
import { POST } from '../../src/app/api/threads/[threadId]/message/route';
|
|
|
|
const { mockAuthToken, mockFetchMutation, mockFetchQuery, mockProxyWorker } =
|
|
vi.hoisted(() => ({
|
|
mockAuthToken: vi.fn(),
|
|
mockFetchMutation: vi.fn(),
|
|
mockFetchQuery: vi.fn(),
|
|
mockProxyWorker: vi.fn(),
|
|
}));
|
|
|
|
vi.mock('@convex-dev/auth/nextjs/server', () => ({
|
|
convexAuthNextjsToken: mockAuthToken,
|
|
}));
|
|
|
|
vi.mock('convex/nextjs', () => ({
|
|
fetchMutation: mockFetchMutation,
|
|
fetchQuery: mockFetchQuery,
|
|
}));
|
|
|
|
vi.mock('@/lib/agent-worker-proxy', () => ({
|
|
proxyWorker: mockProxyWorker,
|
|
}));
|
|
|
|
describe('thread message route', () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
mockAuthToken.mockResolvedValue('token');
|
|
});
|
|
|
|
it('returns 404 when the thread detail query returns null', async () => {
|
|
mockFetchQuery.mockResolvedValue(null);
|
|
|
|
const response = await POST(
|
|
new Request('http://localhost/api/threads/thread-1/message', {
|
|
method: 'POST',
|
|
body: JSON.stringify({ content: 'Hello' }),
|
|
}),
|
|
{ params: Promise.resolve({ threadId: 'thread-1' }) },
|
|
);
|
|
|
|
expect(response.status).toBe(404);
|
|
await expect(response.json()).resolves.toEqual({
|
|
error: 'Thread not found.',
|
|
});
|
|
expect(mockFetchMutation).not.toHaveBeenCalled();
|
|
expect(mockProxyWorker).not.toHaveBeenCalled();
|
|
});
|
|
});
|