/** * @file splitViewStorage.test.ts * @description Tests for the splitViewStorage module. * @author Nguyễn Ngọc Trí Vĩ */ import { describe, it, expect, beforeEach } from "vitest"; import { readSplitViewState, writeSplitViewState, defaultSplitViewState, } from "../splitViewStorage"; describe("splitViewStorage", () => { beforeEach(() => { localStorage.clear(); }); it("returns the default state when nothing is stored", () => { expect(readSplitViewState()).toEqual(defaultSplitViewState()); }); it("defaults to a single unselected pane", () => { expect(defaultSplitViewState()).toEqual({ layout: 1, paneLaneIds: [null] }); }); it("round-trips a written state", () => { writeSplitViewState({ layout: 4, paneLaneIds: [1, 2, null, null] }); expect(readSplitViewState()).toEqual({ layout: 4, paneLaneIds: [1, 2, null, null] }); }); it("falls back to the default when stored JSON is malformed", () => { localStorage.setItem("ccam.workspace.splitView", "{not json"); expect(readSplitViewState()).toEqual(defaultSplitViewState()); }); it("falls back to the default when the stored layout is not 1, 2, or 4", () => { localStorage.setItem( "ccam.workspace.splitView", JSON.stringify({ layout: 3, paneLaneIds: [] }) ); expect(readSplitViewState()).toEqual(defaultSplitViewState()); }); });