mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-23 23:22:32 +00:00
Merged via squash.
Prepared head SHA: 5877389e33
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Reviewed-by: @mbelinky
79 lines
2.1 KiB
TypeScript
79 lines
2.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { normalizeStoredCronJobs } from "./store-migration.js";
|
|
|
|
describe("normalizeStoredCronJobs", () => {
|
|
it("normalizes legacy cron fields and reports migration issues", () => {
|
|
const jobs = [
|
|
{
|
|
jobId: "legacy-job",
|
|
schedule: { kind: "cron", cron: "*/5 * * * *", tz: "UTC" },
|
|
message: "say hi",
|
|
model: "openai/gpt-4.1",
|
|
deliver: true,
|
|
provider: " TeLeGrAm ",
|
|
to: "12345",
|
|
},
|
|
] as Array<Record<string, unknown>>;
|
|
|
|
const result = normalizeStoredCronJobs(jobs);
|
|
|
|
expect(result.mutated).toBe(true);
|
|
expect(result.issues).toMatchObject({
|
|
jobId: 1,
|
|
legacyScheduleCron: 1,
|
|
legacyTopLevelPayloadFields: 1,
|
|
legacyTopLevelDeliveryFields: 1,
|
|
});
|
|
|
|
const [job] = jobs;
|
|
expect(job?.jobId).toBeUndefined();
|
|
expect(job?.id).toBe("legacy-job");
|
|
expect(job?.schedule).toMatchObject({
|
|
kind: "cron",
|
|
expr: "*/5 * * * *",
|
|
tz: "UTC",
|
|
});
|
|
expect(job?.message).toBeUndefined();
|
|
expect(job?.provider).toBeUndefined();
|
|
expect(job?.delivery).toMatchObject({
|
|
mode: "announce",
|
|
channel: "telegram",
|
|
to: "12345",
|
|
});
|
|
expect(job?.payload).toMatchObject({
|
|
kind: "agentTurn",
|
|
message: "say hi",
|
|
model: "openai/gpt-4.1",
|
|
});
|
|
});
|
|
|
|
it("normalizes payload provider alias into channel", () => {
|
|
const jobs = [
|
|
{
|
|
id: "legacy-provider",
|
|
schedule: { kind: "every", everyMs: 60_000 },
|
|
payload: {
|
|
kind: "agentTurn",
|
|
message: "ping",
|
|
provider: " Slack ",
|
|
},
|
|
},
|
|
] as Array<Record<string, unknown>>;
|
|
|
|
const result = normalizeStoredCronJobs(jobs);
|
|
|
|
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?.provider).toBeUndefined();
|
|
expect(jobs[0]?.delivery).toMatchObject({
|
|
mode: "announce",
|
|
channel: "slack",
|
|
});
|
|
});
|
|
});
|