71 lines
2.1 KiB
JavaScript
71 lines
2.1 KiB
JavaScript
// @vitest-environment jsdom
|
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
import {
|
|
buildXlvaskUsageAmountCacheKey,
|
|
clearCachedXlvaskUsageAmount,
|
|
getCachedXlvaskUsageAmount,
|
|
setCachedXlvaskUsageAmount,
|
|
XLVASK_USAGE_AMOUNT_CACHE_TTL_MS,
|
|
} from "@/components/displays/department/pos/sync/xlvaskUsageAmountCache.js";
|
|
|
|
describe("xlvask usage amount cache", () => {
|
|
beforeEach(() => {
|
|
vi.useRealTimers();
|
|
window.localStorage.setItem("token", "xlvask-cache-test-token");
|
|
window.sessionStorage.clear();
|
|
clearCachedXlvaskUsageAmount();
|
|
});
|
|
|
|
it("caches generated amount details by usage log id", () => {
|
|
setCachedXlvaskUsageAmount(
|
|
{ id: 8101 },
|
|
{
|
|
order_items: [{ price: 125, quantity: 1 }],
|
|
potential_duplicates: [],
|
|
}
|
|
);
|
|
|
|
expect(buildXlvaskUsageAmountCacheKey({ usage_log_id: 8101 })).toBe("8101");
|
|
expect(getCachedXlvaskUsageAmount(8101)).toEqual({
|
|
order_items: [{ price: 125, quantity: 1 }],
|
|
potential_duplicates: [],
|
|
});
|
|
});
|
|
|
|
it("does not expose cached details without an authenticated cache scope", () => {
|
|
setCachedXlvaskUsageAmount(8103, {
|
|
order_items: [{ price: 300, quantity: 1 }],
|
|
potential_duplicates: [],
|
|
});
|
|
|
|
window.localStorage.removeItem("token");
|
|
|
|
expect(getCachedXlvaskUsageAmount(8103)).toBeNull();
|
|
});
|
|
|
|
it("keeps generated amount details scoped to the active session", () => {
|
|
setCachedXlvaskUsageAmount(8104, {
|
|
order_items: [{ price: 400, quantity: 1 }],
|
|
potential_duplicates: [],
|
|
});
|
|
|
|
window.localStorage.setItem("token", "another-xlvask-cache-test-token");
|
|
|
|
expect(getCachedXlvaskUsageAmount(8104)).toBeNull();
|
|
});
|
|
|
|
it("expires stale generated amount details", () => {
|
|
vi.useFakeTimers();
|
|
vi.setSystemTime(new Date("2026-05-12T10:00:00.000Z"));
|
|
setCachedXlvaskUsageAmount(8102, {
|
|
order_items: [{ price: 200, quantity: 1 }],
|
|
potential_duplicates: [],
|
|
});
|
|
|
|
vi.setSystemTime(new Date(Date.parse("2026-05-12T10:00:00.000Z") + XLVASK_USAGE_AMOUNT_CACHE_TTL_MS + 1));
|
|
|
|
expect(getCachedXlvaskUsageAmount(8102)).toBeNull();
|
|
vi.useRealTimers();
|
|
});
|
|
});
|