mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-13 19:10:39 +00:00
61 lines
1.7 KiB
TypeScript
61 lines
1.7 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
resolveBatchCompletionFromStatus,
|
|
resolveCompletedBatchResult,
|
|
throwIfBatchTerminalFailure,
|
|
} from "./batch-status.js";
|
|
|
|
describe("batch-status helpers", () => {
|
|
it("resolves completion payload from completed status", () => {
|
|
expect(
|
|
resolveBatchCompletionFromStatus({
|
|
provider: "openai",
|
|
batchId: "b1",
|
|
status: {
|
|
output_file_id: "out-1",
|
|
error_file_id: "err-1",
|
|
},
|
|
}),
|
|
).toEqual({
|
|
outputFileId: "out-1",
|
|
errorFileId: "err-1",
|
|
});
|
|
});
|
|
|
|
it("throws for terminal failure states", async () => {
|
|
await expect(
|
|
throwIfBatchTerminalFailure({
|
|
provider: "voyage",
|
|
status: { id: "b2", status: "failed", error_file_id: "err-file" },
|
|
readError: async () => "bad input",
|
|
}),
|
|
).rejects.toThrow("voyage batch b2 failed: bad input");
|
|
});
|
|
|
|
it("returns completed result directly without waiting", async () => {
|
|
const waitForBatch = async () => ({ outputFileId: "out-2" });
|
|
const result = await resolveCompletedBatchResult({
|
|
provider: "openai",
|
|
status: {
|
|
id: "b3",
|
|
status: "completed",
|
|
output_file_id: "out-3",
|
|
},
|
|
wait: false,
|
|
waitForBatch,
|
|
});
|
|
expect(result).toEqual({ outputFileId: "out-3", errorFileId: undefined });
|
|
});
|
|
|
|
it("throws when wait disabled and batch is not complete", async () => {
|
|
await expect(
|
|
resolveCompletedBatchResult({
|
|
provider: "openai",
|
|
status: { id: "b4", status: "pending" },
|
|
wait: false,
|
|
waitForBatch: async () => ({ outputFileId: "out" }),
|
|
}),
|
|
).rejects.toThrow("openai batch b4 submitted; enable remote.batch.wait to await completion");
|
|
});
|
|
});
|