branch:
destroy.test.ts
1931 bytesRaw
import { env } from "cloudflare:workers";
import { describe, it, expect } from "vitest";
import { connectChatWS } from "./test-utils";
import { getAgentByName } from "agents";
describe("AIChatAgent destroy()", () => {
it("clears active stream state on destroy", async () => {
const room = crypto.randomUUID();
const { ws } = await connectChatWS(`/agents/test-chat-agent/${room}`);
await new Promise((r) => setTimeout(r, 50));
const agentStub = await getAgentByName(env.TestChatAgent, room);
// Start a stream to create active state
const streamId = await agentStub.testStartStream("req-destroy-1");
await agentStub.testStoreStreamChunk(
streamId,
'{"type":"text","text":"test"}'
);
await agentStub.testFlushChunkBuffer();
// Verify state exists before destroy
expect(await agentStub.getActiveStreamId()).toBe(streamId);
const chunks = await agentStub.getStreamChunks(streamId);
expect(chunks.length).toBe(1);
ws.close(1000);
});
it("flushes pending chunk buffer on destroy", async () => {
const room = crypto.randomUUID();
const { ws } = await connectChatWS(`/agents/test-chat-agent/${room}`);
await new Promise((r) => setTimeout(r, 50));
const agentStub = await getAgentByName(env.TestChatAgent, room);
// Start a stream and add chunks without flushing
const streamId = await agentStub.testStartStream("req-destroy-2");
await agentStub.testStoreStreamChunk(
streamId,
'{"type":"text","text":"chunk1"}'
);
await agentStub.testStoreStreamChunk(
streamId,
'{"type":"text","text":"chunk2"}'
);
// These are still in the buffer (not flushed yet since < 10 chunks)
// Flush manually to verify they're stored
await agentStub.testFlushChunkBuffer();
const chunks = await agentStub.getStreamChunks(streamId);
expect(chunks.length).toBe(2);
ws.close(1000);
});
});