Files
omniai-web/src/utils/taskLifecycle.test.ts
T
stringadmin f322679d4a
Web Quality / verify (push) Has been cancelled
test: add web quality gates
2026-06-09 11:34:56 +08:00

60 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "../test/testHarness";
import {
TEXT_INPUT_CREDITS_PER_MILLION,
TEXT_OUTPUT_CREDITS_PER_MILLION,
estimateTextTokenCredits,
getTaskTimeoutPolicy,
isTaskLocallyTimedOut,
} from "./taskLifecycle";
describe("taskLifecycle", () => {
it("keeps text token billing at 1 CNY to 100 credits", () => {
expect(TEXT_INPUT_CREDITS_PER_MILLION).toBe(200);
expect(TEXT_OUTPUT_CREDITS_PER_MILLION).toBe(500);
expect(
estimateTextTokenCredits({
promptTokens: 1_000_000,
completionTokens: 1_000_000,
}),
).toBe(700);
});
it("ignores negative token counts when estimating text billing", () => {
expect(
estimateTextTokenCredits({
promptTokens: -100,
completionTokens: 500_000,
}),
).toBe(250);
});
it("marks unstarted tasks locally timed out after submit timeout", () => {
const policy = getTaskTimeoutPolicy({ kind: "image" });
expect(
isTaskLocallyTimedOut({
startedAt: 1_000,
lastProgressAt: 1_000,
now: 1_000 + policy.submitTimeoutMs,
policy,
progress: 0,
}),
).toBe("no_progress");
});
it("marks running tasks locally timed out when progress stops", () => {
const policy = getTaskTimeoutPolicy({ kind: "video", model: "wan2.7-i2v" });
expect(
isTaskLocallyTimedOut({
startedAt: 1_000,
lastProgressAt: 2_000,
now: 2_000 + policy.noProgressTimeoutMs,
policy,
progress: 40,
}),
).toBe("no_progress");
});
});