mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-03 21:31:26 +00:00
test: optimize gateway infra memory and security coverage
This commit is contained in:
@@ -17,37 +17,26 @@ describe("format-duration", () => {
|
||||
expect(formatDurationCompact(-100)).toBeUndefined();
|
||||
});
|
||||
|
||||
it("formats milliseconds for sub-second durations", () => {
|
||||
expect(formatDurationCompact(500)).toBe("500ms");
|
||||
expect(formatDurationCompact(999)).toBe("999ms");
|
||||
});
|
||||
|
||||
it("formats seconds", () => {
|
||||
expect(formatDurationCompact(1000)).toBe("1s");
|
||||
expect(formatDurationCompact(45000)).toBe("45s");
|
||||
expect(formatDurationCompact(59000)).toBe("59s");
|
||||
});
|
||||
|
||||
it("formats minutes and seconds", () => {
|
||||
expect(formatDurationCompact(60000)).toBe("1m");
|
||||
expect(formatDurationCompact(65000)).toBe("1m5s");
|
||||
expect(formatDurationCompact(90000)).toBe("1m30s");
|
||||
});
|
||||
|
||||
it("omits trailing zero components", () => {
|
||||
expect(formatDurationCompact(60000)).toBe("1m"); // not "1m0s"
|
||||
expect(formatDurationCompact(3600000)).toBe("1h"); // not "1h0m"
|
||||
expect(formatDurationCompact(86400000)).toBe("1d"); // not "1d0h"
|
||||
});
|
||||
|
||||
it("formats hours and minutes", () => {
|
||||
expect(formatDurationCompact(3660000)).toBe("1h1m");
|
||||
expect(formatDurationCompact(5400000)).toBe("1h30m");
|
||||
});
|
||||
|
||||
it("formats days and hours", () => {
|
||||
expect(formatDurationCompact(90000000)).toBe("1d1h");
|
||||
expect(formatDurationCompact(172800000)).toBe("2d");
|
||||
it("formats compact units and omits trailing zero components", () => {
|
||||
const cases = [
|
||||
[500, "500ms"],
|
||||
[999, "999ms"],
|
||||
[1000, "1s"],
|
||||
[45000, "45s"],
|
||||
[59000, "59s"],
|
||||
[60000, "1m"], // not "1m0s"
|
||||
[65000, "1m5s"],
|
||||
[90000, "1m30s"],
|
||||
[3600000, "1h"], // not "1h0m"
|
||||
[3660000, "1h1m"],
|
||||
[5400000, "1h30m"],
|
||||
[86400000, "1d"], // not "1d0h"
|
||||
[90000000, "1d1h"],
|
||||
[172800000, "2d"],
|
||||
] as const;
|
||||
for (const [input, expected] of cases) {
|
||||
expect(formatDurationCompact(input), String(input)).toBe(expected);
|
||||
}
|
||||
});
|
||||
|
||||
it("supports spaced option", () => {
|
||||
@@ -65,25 +54,27 @@ describe("format-duration", () => {
|
||||
});
|
||||
|
||||
describe("formatDurationHuman", () => {
|
||||
it("returns fallback for invalid input", () => {
|
||||
it("returns fallback for invalid duration input", () => {
|
||||
for (const value of [null, undefined, -100]) {
|
||||
expect(formatDurationHuman(value)).toBe("n/a");
|
||||
}
|
||||
expect(formatDurationHuman(null, "unknown")).toBe("unknown");
|
||||
});
|
||||
|
||||
it("formats single unit", () => {
|
||||
expect(formatDurationHuman(500)).toBe("500ms");
|
||||
expect(formatDurationHuman(5000)).toBe("5s");
|
||||
expect(formatDurationHuman(180000)).toBe("3m");
|
||||
expect(formatDurationHuman(7200000)).toBe("2h");
|
||||
expect(formatDurationHuman(172800000)).toBe("2d");
|
||||
});
|
||||
|
||||
it("uses 24h threshold for days", () => {
|
||||
expect(formatDurationHuman(23 * 3600000)).toBe("23h");
|
||||
expect(formatDurationHuman(24 * 3600000)).toBe("1d");
|
||||
expect(formatDurationHuman(25 * 3600000)).toBe("1d"); // rounds
|
||||
it("formats single-unit outputs and day threshold behavior", () => {
|
||||
const cases = [
|
||||
[500, "500ms"],
|
||||
[5000, "5s"],
|
||||
[180000, "3m"],
|
||||
[7200000, "2h"],
|
||||
[23 * 3600000, "23h"],
|
||||
[24 * 3600000, "1d"],
|
||||
[25 * 3600000, "1d"], // rounds
|
||||
[172800000, "2d"],
|
||||
] as const;
|
||||
for (const [input, expected] of cases) {
|
||||
expect(formatDurationHuman(input), String(input)).toBe(expected);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -166,20 +157,27 @@ describe("format-datetime", () => {
|
||||
|
||||
describe("format-relative", () => {
|
||||
describe("formatTimeAgo", () => {
|
||||
it("returns fallback for invalid input", () => {
|
||||
it("returns fallback for invalid elapsed input", () => {
|
||||
for (const value of [null, undefined, -100]) {
|
||||
expect(formatTimeAgo(value)).toBe("unknown");
|
||||
}
|
||||
expect(formatTimeAgo(null, { fallback: "n/a" })).toBe("n/a");
|
||||
});
|
||||
|
||||
it("formats with 'ago' suffix by default", () => {
|
||||
expect(formatTimeAgo(0)).toBe("just now");
|
||||
expect(formatTimeAgo(29000)).toBe("just now"); // rounds to <1m
|
||||
expect(formatTimeAgo(30000)).toBe("1m ago"); // 30s rounds to 1m
|
||||
expect(formatTimeAgo(300000)).toBe("5m ago");
|
||||
expect(formatTimeAgo(7200000)).toBe("2h ago");
|
||||
expect(formatTimeAgo(172800000)).toBe("2d ago");
|
||||
it("formats relative age around key unit boundaries", () => {
|
||||
const cases = [
|
||||
[0, "just now"],
|
||||
[29000, "just now"], // rounds to <1m
|
||||
[30000, "1m ago"], // 30s rounds to 1m
|
||||
[300000, "5m ago"],
|
||||
[7200000, "2h ago"],
|
||||
[47 * 3600000, "47h ago"],
|
||||
[48 * 3600000, "2d ago"],
|
||||
[172800000, "2d ago"],
|
||||
] as const;
|
||||
for (const [input, expected] of cases) {
|
||||
expect(formatTimeAgo(input), String(input)).toBe(expected);
|
||||
}
|
||||
});
|
||||
|
||||
it("omits suffix when suffix: false", () => {
|
||||
@@ -187,15 +185,10 @@ describe("format-relative", () => {
|
||||
expect(formatTimeAgo(300000, { suffix: false })).toBe("5m");
|
||||
expect(formatTimeAgo(7200000, { suffix: false })).toBe("2h");
|
||||
});
|
||||
|
||||
it("uses 48h threshold before switching to days", () => {
|
||||
expect(formatTimeAgo(47 * 3600000)).toBe("47h ago");
|
||||
expect(formatTimeAgo(48 * 3600000)).toBe("2d ago");
|
||||
});
|
||||
});
|
||||
|
||||
describe("formatRelativeTimestamp", () => {
|
||||
it("returns fallback for invalid input", () => {
|
||||
it("returns fallback for invalid timestamp input", () => {
|
||||
for (const value of [null, undefined]) {
|
||||
expect(formatRelativeTimestamp(value)).toBe("n/a");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user