assistant-cloud
Version:
Cloud integration for assistant-ui
114 lines (104 loc) • 2.97 kB
text/typescript
import { describe, expect, it, vi } from "vitest";
import type { AssistantCloudAPI } from "./AssistantCloudAPI";
import { AssistantCloudScores } from "./AssistantCloudScores";
const createCloudScores = () => {
const makeRequest = vi.fn();
const api = { makeRequest } as unknown as AssistantCloudAPI;
return { scores: new AssistantCloudScores(api), makeRequest };
};
describe("AssistantCloudScores", () => {
it("decodes the number the cloud stores for a boolean score", async () => {
const { scores, makeRequest } = createCloudScores();
makeRequest.mockResolvedValue({
score_id: "score_2",
name: "resolved",
data_type: "boolean",
value: 1,
string_value: null,
});
await expect(
scores.create({
name: "resolved",
data_type: "boolean",
value: true,
thread_id: "thread_1",
}),
).resolves.toMatchObject({ data_type: "boolean", value: 1 });
});
it("posts the score body as given and decodes the response", async () => {
const { scores, makeRequest } = createCloudScores();
makeRequest.mockResolvedValue({
score_id: "score_1",
name: "helpfulness",
data_type: "numeric",
value: 0.8,
string_value: null,
});
await expect(
scores.create({
name: "helpfulness",
data_type: "numeric",
value: 0.8,
thread_id: "thread_1",
message_id: "msg_1",
}),
).resolves.toEqual({
score_id: "score_1",
name: "helpfulness",
data_type: "numeric",
value: 0.8,
string_value: null,
});
expect(makeRequest).toHaveBeenCalledWith("/scores", {
method: "POST",
body: {
name: "helpfulness",
data_type: "numeric",
value: 0.8,
thread_id: "thread_1",
message_id: "msg_1",
},
});
});
it("decodes a categorical score", async () => {
const { scores, makeRequest } = createCloudScores();
makeRequest.mockResolvedValue({
score_id: "score_2",
name: "tone",
data_type: "categorical",
value: null,
string_value: "friendly",
});
await expect(
scores.create({
name: "tone",
data_type: "categorical",
string_value: "friendly",
run_id: "run_1",
}),
).resolves.toMatchObject({
data_type: "categorical",
string_value: "friendly",
});
});
it("rejects a malformed score response", async () => {
const { scores, makeRequest } = createCloudScores();
makeRequest.mockResolvedValue({
score_id: 42,
name: "helpfulness",
data_type: "numeric",
value: 1,
string_value: null,
});
await expect(
scores.create({
name: "helpfulness",
data_type: "numeric",
value: 1,
run_id: "run_1",
}),
).rejects.toThrow(
'Invalid Assistant Cloud response for "score response.score_id": expected a string',
);
});
});