Files
pleno-vue/tests/unit/xlvask-usage-amount-cache.spec.js
T

48 lines
1.4 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.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("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();
});
});