Files
kandev/apps/web/lib/state/store.test.ts
T
José Almeida d5da5d0022 fix(web): select pull request on review surface (#1857)
* fix(web): select pull request on review surface

* fix(web): address review feedback

* test(web): stabilize tablet review target assertion

* fix(web): address late review feedback

* test(web): cover PR review boundary branches
2026-07-22 17:52:58 +01:00

63 lines
1.9 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { createAppStore, type AppState } from "./store";
describe("createAppStore", () => {
it("retains sidebar boot settings after slice initialization", () => {
const store = createAppStore({
userSettings: {
sidebarViews: [
{
id: "server",
name: "Server",
filters: [],
sort: { key: "state", direction: "asc" },
group: "none",
collapsedGroups: [],
},
],
sidebarActiveViewId: "server",
sidebarTaskPrefs: {
pinnedTaskIds: ["task-1"],
orderedTaskIds: ["task-1"],
subtaskOrderByParentId: {},
},
loaded: true,
},
} as unknown as Partial<AppState>);
expect(store.getState().sidebarViews.activeViewId).toBe("server");
expect(store.getState().sidebarTaskPrefs.pinnedTaskIds).toEqual(["task-1"]);
});
it("starts with no task-scoped Review PR overrides", () => {
const store = createAppStore();
expect(store.getState().reviewPRSelection).toEqual({ selectedKeyByTaskId: {} });
});
it("retains caller-supplied task-scoped Review PR overrides", () => {
const store = createAppStore({
reviewPRSelection: {
selectedKeyByTaskId: { "task-1": "acme/widget/7" },
},
} as Partial<AppState>);
expect(store.getState().reviewPRSelection.selectedKeyByTaskId).toEqual({
"task-1": "acme/widget/7",
});
});
it("stores Review PR overrides independently by task", () => {
const store = createAppStore();
const state = store.getState();
state.setReviewPRSelection("task-1", "acme/widget/1");
state.setReviewPRSelection("task-2", "acme/widget/2");
expect(store.getState().reviewPRSelection.selectedKeyByTaskId).toEqual({
"task-1": "acme/widget/1",
"task-2": "acme/widget/2",
});
});
});