forked from bai/curriculum-project-hub
fix(hub): send Feishu files explicitly
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { PatchableTextStream } from "../../src/feishu/textStream.js";
|
||||
|
||||
describe("PatchableTextStream", () => {
|
||||
it("creates only one initial message when deltas arrive while create is pending", async () => {
|
||||
const creates: string[] = [];
|
||||
const patches: string[] = [];
|
||||
let resolveCreate: ((id: string) => void) | undefined;
|
||||
const firstCreate = new Promise<string>((resolve) => {
|
||||
resolveCreate = resolve;
|
||||
});
|
||||
const stream = new PatchableTextStream(
|
||||
{
|
||||
create: async (text) => {
|
||||
creates.push(text);
|
||||
return firstCreate;
|
||||
},
|
||||
patch: async (_messageId, text) => {
|
||||
patches.push(text);
|
||||
},
|
||||
},
|
||||
{ patchIntervalMs: 0 },
|
||||
);
|
||||
|
||||
stream.append("我目前运行在");
|
||||
await Promise.resolve();
|
||||
stream.append(" Claude Sonnet");
|
||||
resolveCreate?.("msg-1");
|
||||
await stream.finish("我目前运行在 Claude Sonnet");
|
||||
|
||||
expect(creates).toEqual(["我目前运行在"]);
|
||||
expect(patches.at(-1)).toBe("我目前运行在 Claude Sonnet");
|
||||
});
|
||||
|
||||
it("sends a fallback message when no stream delta arrived", async () => {
|
||||
const creates: string[] = [];
|
||||
const stream = new PatchableTextStream({
|
||||
create: async (text) => {
|
||||
creates.push(text);
|
||||
return "msg-1";
|
||||
},
|
||||
patch: async () => {},
|
||||
});
|
||||
|
||||
await stream.finish("完整回复");
|
||||
|
||||
expect(creates).toEqual(["完整回复"]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user