chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { mapRunToLiveFields } from "~/presenters/v3/mapRunToLiveFields.server";
|
||||
|
||||
describe("mapRunToLiveFields", () => {
|
||||
it("maps an executing run with lockedAt fallback and non-final flags", () => {
|
||||
const updatedAt = new Date("2026-05-07T10:00:00.000Z");
|
||||
const lockedAt = new Date("2026-05-07T09:59:50.000Z");
|
||||
|
||||
const result = mapRunToLiveFields({
|
||||
friendlyId: "run_123",
|
||||
status: "EXECUTING",
|
||||
updatedAt,
|
||||
startedAt: null,
|
||||
lockedAt,
|
||||
completedAt: null,
|
||||
usageDurationMs: BigInt(2500),
|
||||
costInCents: 10,
|
||||
baseCostInCents: 5,
|
||||
});
|
||||
|
||||
expect(result).toEqual({
|
||||
friendlyId: "run_123",
|
||||
status: "EXECUTING",
|
||||
updatedAt: updatedAt.toISOString(),
|
||||
startedAt: lockedAt.toISOString(),
|
||||
finishedAt: undefined,
|
||||
hasFinished: false,
|
||||
isCancellable: true,
|
||||
isPending: false,
|
||||
usageDurationMs: 2500,
|
||||
costInCents: 10,
|
||||
baseCostInCents: 5,
|
||||
});
|
||||
});
|
||||
|
||||
it("maps a final run and prefers completedAt for finishedAt", () => {
|
||||
const updatedAt = new Date("2026-05-07T10:00:00.000Z");
|
||||
const startedAt = new Date("2026-05-07T09:59:00.000Z");
|
||||
const completedAt = new Date("2026-05-07T09:59:30.000Z");
|
||||
|
||||
const result = mapRunToLiveFields({
|
||||
friendlyId: "run_456",
|
||||
status: "COMPLETED_SUCCESSFULLY",
|
||||
updatedAt,
|
||||
startedAt,
|
||||
lockedAt: null,
|
||||
completedAt,
|
||||
usageDurationMs: 1200,
|
||||
costInCents: 20,
|
||||
baseCostInCents: 7,
|
||||
});
|
||||
|
||||
expect(result.finishedAt).toBe(completedAt.toISOString());
|
||||
expect(result.startedAt).toBe(startedAt.toISOString());
|
||||
expect(result.hasFinished).toBe(true);
|
||||
expect(result.isCancellable).toBe(false);
|
||||
});
|
||||
|
||||
it("falls back to updatedAt when a final run has no completedAt", () => {
|
||||
const updatedAt = new Date("2026-05-07T10:00:00.000Z");
|
||||
|
||||
const result = mapRunToLiveFields({
|
||||
friendlyId: "run_789",
|
||||
status: "CRASHED",
|
||||
updatedAt,
|
||||
startedAt: null,
|
||||
lockedAt: null,
|
||||
completedAt: null,
|
||||
usageDurationMs: 0,
|
||||
costInCents: 0,
|
||||
baseCostInCents: 0,
|
||||
});
|
||||
|
||||
expect(result.finishedAt).toBe(updatedAt.toISOString());
|
||||
expect(result.hasFinished).toBe(true);
|
||||
expect(result.isPending).toBe(false);
|
||||
expect(result.isCancellable).toBe(false);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user