38 lines
1.5 KiB
JavaScript
38 lines
1.5 KiB
JavaScript
// @vitest-environment jsdom
|
|
|
|
import { describe, expect, it } from "vitest";
|
|
import { normalizeStoredCustomerNumber, storeSessionToken } from "@/services/sessionStorage.js";
|
|
|
|
describe("session storage helpers", () => {
|
|
it("stores subuser QR session context with the selected customer number", () => {
|
|
const stored = storeSessionToken("subuser-qr-token", {
|
|
isSubuser: true,
|
|
selectedCustomerNumber: "12345678",
|
|
});
|
|
|
|
expect(stored).toBe(true);
|
|
expect(localStorage.getItem("token")).toBe("subuser-qr-token");
|
|
expect(localStorage.getItem("is_subuser")).toBe("true");
|
|
expect(localStorage.getItem("selected_customer_number")).toBe("12345678");
|
|
});
|
|
|
|
it("clears stale subuser context for normal QR session tokens", () => {
|
|
localStorage.setItem("is_subuser", "true");
|
|
localStorage.setItem("selected_customer_number", "12345678");
|
|
|
|
const stored = storeSessionToken("customer-qr-token");
|
|
|
|
expect(stored).toBe(true);
|
|
expect(localStorage.getItem("token")).toBe("customer-qr-token");
|
|
expect(localStorage.getItem("is_subuser")).toBeNull();
|
|
expect(localStorage.getItem("selected_customer_number")).toBeNull();
|
|
});
|
|
|
|
it("rejects non-positive or mixed customer number values", () => {
|
|
expect(normalizeStoredCustomerNumber("12345678")).toBe(12345678);
|
|
expect(normalizeStoredCustomerNumber("0")).toBeNull();
|
|
expect(normalizeStoredCustomerNumber("123abc")).toBeNull();
|
|
expect(normalizeStoredCustomerNumber("")).toBeNull();
|
|
});
|
|
});
|