mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-19 19:18:38 +00:00
62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { validateConfigObject } from "./config.js";
|
|
|
|
describe("meta.lastTouchedAt numeric timestamp coercion", () => {
|
|
it("accepts a numeric Unix timestamp and coerces it to an ISO string", () => {
|
|
const numericTimestamp = 1770394758161;
|
|
const res = validateConfigObject({
|
|
meta: {
|
|
lastTouchedAt: numericTimestamp,
|
|
},
|
|
});
|
|
expect(res.ok).toBe(true);
|
|
if (res.ok) {
|
|
expect(typeof res.config.meta?.lastTouchedAt).toBe("string");
|
|
expect(res.config.meta?.lastTouchedAt).toBe(new Date(numericTimestamp).toISOString());
|
|
}
|
|
});
|
|
|
|
it("still accepts a string ISO timestamp unchanged", () => {
|
|
const isoTimestamp = "2026-02-07T01:39:18.161Z";
|
|
const res = validateConfigObject({
|
|
meta: {
|
|
lastTouchedAt: isoTimestamp,
|
|
},
|
|
});
|
|
expect(res.ok).toBe(true);
|
|
if (res.ok) {
|
|
expect(res.config.meta?.lastTouchedAt).toBe(isoTimestamp);
|
|
}
|
|
});
|
|
|
|
it("rejects out-of-range numeric timestamps without throwing", () => {
|
|
const res = validateConfigObject({
|
|
meta: {
|
|
lastTouchedAt: 1e20,
|
|
},
|
|
});
|
|
expect(res.ok).toBe(false);
|
|
});
|
|
|
|
it("passes non-date strings through unchanged (backwards-compatible)", () => {
|
|
const res = validateConfigObject({
|
|
meta: {
|
|
lastTouchedAt: "not-a-date",
|
|
},
|
|
});
|
|
expect(res.ok).toBe(true);
|
|
if (res.ok) {
|
|
expect(res.config.meta?.lastTouchedAt).toBe("not-a-date");
|
|
}
|
|
});
|
|
|
|
it("accepts meta with only lastTouchedVersion (no lastTouchedAt)", () => {
|
|
const res = validateConfigObject({
|
|
meta: {
|
|
lastTouchedVersion: "2026.2.6",
|
|
},
|
|
});
|
|
expect(res.ok).toBe(true);
|
|
});
|
|
});
|