mirror of
https://github.com/multica-ai/multica.git
synced 2026-07-27 04:56:20 +02:00
* feat(analytics): add daily client usage reporting (MUL-5125) Co-authored-by: multica-agent <github@multica.ai> * fix(analytics): clarify daily usage semantics (MUL-5125) Co-authored-by: multica-agent <github@multica.ai> * fix(analytics): resolve usage review blockers (MUL-5125) Co-authored-by: multica-agent <github@multica.ai> --------- Co-authored-by: Eve <eve@multica-ai.local> Co-authored-by: multica-agent <github@multica.ai>
29 lines
1.0 KiB
TypeScript
29 lines
1.0 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import type { StorageAdapter } from "../types/storage";
|
|
import { getOrCreateInstallId } from "./install-id";
|
|
|
|
function memoryStorage(): StorageAdapter {
|
|
const values = new Map<string, string>();
|
|
return {
|
|
getItem: (key) => values.get(key) ?? null,
|
|
setItem: (key, value) => values.set(key, value),
|
|
removeItem: (key) => values.delete(key),
|
|
};
|
|
}
|
|
|
|
describe("getOrCreateInstallId", () => {
|
|
it("persists one UUID across calls", () => {
|
|
const storage = memoryStorage();
|
|
const generated = "3d267c82-59a9-46b2-a189-56e1504449a7";
|
|
expect(getOrCreateInstallId(storage, () => generated)).toBe(generated);
|
|
expect(getOrCreateInstallId(storage, () => "unused")).toBe(generated);
|
|
});
|
|
|
|
it("replaces corrupted persisted values", () => {
|
|
const storage = memoryStorage();
|
|
storage.setItem("multica_install_id", "broken");
|
|
const generated = "c9c7a898-ee7c-44a0-bd0c-66a16461e591";
|
|
expect(getOrCreateInstallId(storage, () => generated)).toBe(generated);
|
|
});
|
|
});
|