Merge teacher reply cleanup with continuous conversations

This commit is contained in:
鲨鱼辣椒 committed 2026-09-28 18:29:04 +08:00
commit 581ebc888b
40 files changed
+1759 -1988

No files matched your search

@@ -0,0 +1,31 @@
// @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();
});
});