arcananex-synapse
Version:
Agentic AI framework
59 lines (51 loc) • 1.94 kB
text/typescript
import { UserMessage } from "../llm-invoker";
import * as cut from "./bedrock-llm-client-adapter";
jest.mock("../clients/bedrock", () => ({
invokeModel: jest.fn().mockResolvedValue({
body: Buffer.from(
JSON.stringify({
output: {message: { role: "assistant", content: [{ text: "Mocked response" }] }},
usage: {
promptTokens: 10,
completionTokens: 5,
totalTokens: 15,
},
raw: {},
}),
"utf-8"
),
}),
}));
describe("Bedrock LLM Client Adapter", () => {
it("should be implemented", () => {
const adapter = new cut.BedrockLLMClientAdapter();
expect(adapter).toBeDefined();
expect(adapter.invoke).toBeDefined();
expect(typeof adapter.invoke).toBe("function");
});
it("should invoke model with messages and memories", async () => {
const adapter = new cut.BedrockLLMClientAdapter();
const messages: UserMessage[] = [
{ role: "user", content: "Hello, how are you?" },
{ role: "assistant", content: "I'm fine, thank you!" },
];
const memories = [{ content: "User prefers short responses." }];
const response = await adapter.invoke(messages, memories);
expect(response).toBeDefined();
expect(response.message).toBeDefined();
expect(response.usage).toBeDefined();
});
it("should return mocked response", async () => {
const adapter = new cut.BedrockLLMClientAdapter();
const messages: UserMessage[] = [
{ role: "user", content: "What is the weather like?" },
];
const memories = [{ content: "User likes sunny weather." }];
const response = await adapter.invoke(messages, memories);
expect(response.message.role).toBe("assistant");
expect(response.message.content).toBe("Mocked response");
expect(response.usage.promptTokens).toBe(10);
expect(response.usage.completionTokens).toBe(5);
expect(response.usage.totalTokens).toBe(15);
});
});