import { describe, expect, it } from "vitest"; import { resolveBootstrapCompanySelection, shouldClearStoredCompanySelection } from "./CompanyContext"; const activeCompany = { id: "company-1" }; const secondActiveCompany = { id: "company-2" }; const archivedCompany = { id: "archived-company" }; describe("resolveBootstrapCompanySelection", () => { it("does not expose a stale stored company id before companies load", () => { expect(resolveBootstrapCompanySelection({ companies: [], sidebarCompanies: [], selectedCompanyId: null, storedCompanyId: "stale-company", })).toBeNull(); }); it("replaces a stale stored company id with the first loaded company", () => { expect(resolveBootstrapCompanySelection({ companies: [activeCompany], sidebarCompanies: [activeCompany], selectedCompanyId: null, storedCompanyId: "stale-company", })).toBe("company-1"); }); it("keeps a valid selected company ahead of stored bootstrap state", () => { expect(resolveBootstrapCompanySelection({ companies: [activeCompany], sidebarCompanies: [activeCompany], selectedCompanyId: "company-1", storedCompanyId: "stale-company", })).toBe("company-1"); }); it("keeps a valid stored company id instead of falling back to the first company", () => { expect(resolveBootstrapCompanySelection({ companies: [activeCompany, secondActiveCompany], sidebarCompanies: [activeCompany, secondActiveCompany], selectedCompanyId: null, storedCompanyId: "company-2", })).toBe("company-2"); }); it("uses selectable sidebar companies before archived companies", () => { expect(resolveBootstrapCompanySelection({ companies: [archivedCompany, activeCompany], sidebarCompanies: [activeCompany], selectedCompanyId: null, storedCompanyId: "archived-company", })).toBe("company-1"); }); }); describe("shouldClearStoredCompanySelection", () => { it("does not clear the stored company selection during an unauthorized company list response", () => { expect(shouldClearStoredCompanySelection({ companies: [], isLoading: false, unauthorized: true, })).toBe(false); }); it("clears the stored company selection when an authorized company list is empty", () => { expect(shouldClearStoredCompanySelection({ companies: [], isLoading: false, unauthorized: false, })).toBe(true); }); });