32 lines
1.6 KiB
TypeScript
32 lines
1.6 KiB
TypeScript
// @vitest-environment node
|
|
import { describe, expect, it, vi } from 'vitest';
|
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
import { Readable } from 'node:stream';
|
|
import type { HostApiContext } from '../../electron/api/context';
|
|
import { handleCodingTeacherRoutes } from '../../electron/api/routes/coding-teacher';
|
|
|
|
describe('retired discussion mutation routes', () => {
|
|
it.each([
|
|
'/api/coding/projects/project/conversations/source/teacher-topics/topic/discussion',
|
|
'/api/coding/teacher-preview/topics/topic/discussion',
|
|
'/api/coding/projects/project/agent-topics/topic/discussion',
|
|
'/api/coding/projects/project/teacher-topics/topic/discussion',
|
|
'/api/coding/projects/project/friend-topics/topic/discussion',
|
|
'/api/coding/agent-conversations/agent/discussion',
|
|
])('does not dispatch a stale client action at %s', async pathname => {
|
|
const req = Object.assign(Readable.from([JSON.stringify({
|
|
toolId: 'archived-tool', revision: 7, action: 'resume',
|
|
})]), { method: 'POST' }) as IncomingMessage;
|
|
const res = { setHeader: vi.fn(), end: vi.fn() };
|
|
const updateDiscussion = vi.fn().mockResolvedValue({});
|
|
const conversation = vi.fn();
|
|
const ctx = { codingProducts: { teacher: { updateDiscussion, conversation } } } as unknown as HostApiContext;
|
|
|
|
expect(await handleCodingTeacherRoutes(req, res as unknown as ServerResponse,
|
|
new URL(pathname, 'http://localhost'), ctx)).toBe(false);
|
|
expect(updateDiscussion).not.toHaveBeenCalled();
|
|
expect(conversation).not.toHaveBeenCalled();
|
|
expect(res.end).not.toHaveBeenCalled();
|
|
});
|
|
});
|