test: tighten cron migration assertions

This commit is contained in:
Peter Steinberger
2026-05-10 01:52:49 +01:00
parent 2097447426
commit 9b2f947b4c

View File

@@ -47,34 +47,29 @@ describe("normalizeStoredCronJobs", () => {
const result = normalizeStoredCronJobs(jobs);
expect(result.mutated).toBe(true);
expect(result.issues).toMatchObject({
jobId: 1,
legacyScheduleCron: 1,
legacyTopLevelPayloadFields: 1,
legacyTopLevelDeliveryFields: 1,
});
expect(result.issues.jobId).toBe(1);
expect(result.issues.legacyScheduleCron).toBe(1);
expect(result.issues.legacyTopLevelPayloadFields).toBe(1);
expect(result.issues.legacyTopLevelDeliveryFields).toBe(1);
const [job] = jobs;
expect(job?.jobId).toBeUndefined();
expect(job?.id).toBe("legacy-job");
expect(job?.schedule).toMatchObject({
kind: "cron",
expr: "*/5 * * * *",
tz: "UTC",
});
const schedule = job?.schedule as Record<string, unknown> | undefined;
expect(schedule?.kind).toBe("cron");
expect(schedule?.expr).toBe("*/5 * * * *");
expect(schedule?.tz).toBe("UTC");
expect(job?.message).toBeUndefined();
expect(job?.provider).toBeUndefined();
expect(job?.delivery).toMatchObject({
mode: "announce",
channel: "telegram",
to: "12345",
threadId: "77",
});
expect(job?.payload).toMatchObject({
kind: "agentTurn",
message: "say hi",
model: "openai/gpt-5.5",
});
const delivery = job?.delivery as Record<string, unknown> | undefined;
expect(delivery?.mode).toBe("announce");
expect(delivery?.channel).toBe("telegram");
expect(delivery?.to).toBe("12345");
expect(delivery?.threadId).toBe("77");
const payload = job?.payload as Record<string, unknown> | undefined;
expect(payload?.kind).toBe("agentTurn");
expect(payload?.message).toBe("say hi");
expect(payload?.model).toBe("openai/gpt-5.5");
});
it("normalizes payload provider alias into channel", () => {
@@ -94,16 +89,13 @@ describe("normalizeStoredCronJobs", () => {
expect(result.mutated).toBe(true);
expect(result.issues.legacyPayloadProvider).toBe(1);
expect(jobs[0]?.payload).toMatchObject({
kind: "agentTurn",
message: "ping",
});
const payload = jobs[0]?.payload as Record<string, unknown> | undefined;
expect(payload?.kind).toBe("agentTurn");
expect(payload?.message).toBe("ping");
expect(payload?.provider).toBeUndefined();
expect(jobs[0]?.delivery).toMatchObject({
mode: "announce",
channel: "slack",
});
const delivery = jobs[0]?.delivery as Record<string, unknown> | undefined;
expect(delivery?.mode).toBe("announce");
expect(delivery?.channel).toBe("slack");
});
it("rewrites legacy OpenAI Codex model refs in cron payloads", () => {
@@ -122,12 +114,11 @@ describe("normalizeStoredCronJobs", () => {
expect(result.mutated).toBe(true);
expect(result.issues.legacyPayloadCodexModel).toBe(1);
expect(job.payload).toMatchObject({
kind: "agentTurn",
message: "ping",
model: "openai/gpt-5.5",
fallbacks: ["anthropic/claude-opus-4.6", "openai/gpt-5.4-mini"],
});
const payload = job.payload as Record<string, unknown>;
expect(payload.kind).toBe("agentTurn");
expect(payload.message).toBe("ping");
expect(payload.model).toBe("openai/gpt-5.5");
expect(payload.fallbacks).toEqual(["anthropic/claude-opus-4.6", "openai/gpt-5.4-mini"]);
});
it("does not report legacyPayloadKind for already-normalized payload kinds", () => {
@@ -181,8 +172,12 @@ describe("normalizeStoredCronJobs", () => {
expect(result.mutated).toBe(true);
expect(result.issues.legacyPayloadKind).toBe(2);
expect(jobs[0]?.payload).toMatchObject({ kind: "agentTurn", message: "ping" });
expect(jobs[1]?.payload).toMatchObject({ kind: "systemEvent", text: "pong" });
const firstPayload = jobs[0]?.payload as Record<string, unknown> | undefined;
expect(firstPayload?.kind).toBe("agentTurn");
expect(firstPayload?.message).toBe("ping");
const secondPayload = jobs[1]?.payload as Record<string, unknown> | undefined;
expect(secondPayload?.kind).toBe("systemEvent");
expect(secondPayload?.text).toBe("pong");
});
it("normalizes isolated legacy jobs without mutating runtime code paths", () => {
@@ -322,12 +317,9 @@ describe("normalizeStoredCronJobs", () => {
});
expect(result.mutated).toBe(true);
expect(job.schedule).toEqual(
expect.objectContaining({
kind: "cron",
expr: "0 */2 * * *",
}),
);
const schedule = job.schedule as Record<string, unknown>;
expect(schedule.kind).toBe("cron");
expect(schedule.expr).toBe("0 */2 * * *");
expect(job.sessionTarget).toBe("main");
expect(job.wakeMode).toBe("now");
expect(job.payload).toEqual({