refactor(desktop): harden workspace shell foundation
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
55
apps/desktop/src/lib/demo-workspace.test.ts
Normal file
55
apps/desktop/src/lib/demo-workspace.test.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import {
|
||||
buildDemoStringPreview,
|
||||
formatDemoDurationFromMillis,
|
||||
parseDemoTtlToSeconds,
|
||||
persistDemoKeyTtl,
|
||||
updateDemoKeyTtl,
|
||||
updateDemoStringValue,
|
||||
type DemoWorkspaceKey,
|
||||
} from "./demo-workspace";
|
||||
|
||||
const demoKeys: DemoWorkspaceKey[] = [
|
||||
{
|
||||
id: "cache:homepage",
|
||||
name: "cache:homepage",
|
||||
type: "string",
|
||||
ttl: "48s",
|
||||
preview: "serialized landing payload",
|
||||
editable: true,
|
||||
value: "{\"hero\":\"Redis GUI\"}",
|
||||
summary: "String keys are editable in V1.",
|
||||
},
|
||||
];
|
||||
|
||||
describe("demo workspace helpers", () => {
|
||||
it("updates string values and refreshes the visible preview", () => {
|
||||
expect(
|
||||
updateDemoStringValue(demoKeys, "cache:homepage", "next value"),
|
||||
).toEqual([
|
||||
{
|
||||
...demoKeys[0],
|
||||
value: "next value",
|
||||
preview: "next value",
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it("updates TTL state for session-local demo flows", () => {
|
||||
expect(updateDemoKeyTtl(demoKeys, "cache:homepage", 90_000)[0]?.ttl).toBe("1m");
|
||||
expect(persistDemoKeyTtl(demoKeys, "cache:homepage")[0]?.ttl).toBe("persistent");
|
||||
});
|
||||
|
||||
it("formats preview text and durations consistently", () => {
|
||||
expect(buildDemoStringPreview("alpha beta gamma delta epsilon zeta eta theta", 16)).toBe(
|
||||
"alpha beta gamm…",
|
||||
);
|
||||
expect(formatDemoDurationFromMillis(750)).toBe("750ms");
|
||||
expect(formatDemoDurationFromMillis(5_000)).toBe("5s");
|
||||
expect(formatDemoDurationFromMillis(7_200_000)).toBe("2h");
|
||||
expect(parseDemoTtlToSeconds("750ms")).toBe(0);
|
||||
expect(parseDemoTtlToSeconds("5s")).toBe(5);
|
||||
expect(parseDemoTtlToSeconds("2h")).toBe(7200);
|
||||
expect(parseDemoTtlToSeconds("persistent")).toBe(-1);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user