源码快照 @ 2026-09-02 (source-only, 剔除非源码素材)
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
import { beforeEach, describe, expect, test } from "bun:test";
|
||||
|
||||
import { useSessionManagementStore } from "../src/react-app/domains/session/sidebar/session-management-store";
|
||||
|
||||
const workspaceId = "workspace-1";
|
||||
|
||||
function resetStore() {
|
||||
useSessionManagementStore.setState({
|
||||
pinnedIds: [],
|
||||
orderByWorkspace: {},
|
||||
groupsByWorkspace: {
|
||||
[workspaceId]: {
|
||||
groups: [
|
||||
{ id: "group-a", label: "Alpha" },
|
||||
{ id: "group-b", label: "Beta" },
|
||||
],
|
||||
assignments: {
|
||||
"session-1": "group-a",
|
||||
"session-2": "group-a",
|
||||
"session-3": "group-b",
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
describe("session group management", () => {
|
||||
beforeEach(resetStore);
|
||||
|
||||
test("renames an existing group", () => {
|
||||
useSessionManagementStore.getState().renameGroup(workspaceId, "group-a", "Renamed");
|
||||
|
||||
expect(useSessionManagementStore.getState().groupsByWorkspace[workspaceId]?.groups).toEqual([
|
||||
{ id: "group-a", label: "Renamed" },
|
||||
{ id: "group-b", label: "Beta" },
|
||||
]);
|
||||
});
|
||||
|
||||
test("moves sessions to the selected destination before removing a group", () => {
|
||||
useSessionManagementStore.getState().removeGroup(workspaceId, "group-a", "group-b");
|
||||
|
||||
const workspace = useSessionManagementStore.getState().groupsByWorkspace[workspaceId];
|
||||
expect(workspace?.groups).toEqual([{ id: "group-b", label: "Beta" }]);
|
||||
expect(workspace?.assignments).toEqual({
|
||||
"session-1": "group-b",
|
||||
"session-2": "group-b",
|
||||
"session-3": "group-b",
|
||||
});
|
||||
});
|
||||
|
||||
test("moves sessions to ungrouped before removing a group", () => {
|
||||
useSessionManagementStore.getState().removeGroup(workspaceId, "group-a", null);
|
||||
|
||||
expect(useSessionManagementStore.getState().groupsByWorkspace[workspaceId]?.assignments).toEqual({
|
||||
"session-3": "group-b",
|
||||
});
|
||||
});
|
||||
|
||||
test("does not publish an equivalent server group snapshot", () => {
|
||||
const before = useSessionManagementStore.getState().groupsByWorkspace[workspaceId];
|
||||
let notifications = 0;
|
||||
const unsubscribe = useSessionManagementStore.subscribe(() => {
|
||||
notifications += 1;
|
||||
});
|
||||
|
||||
useSessionManagementStore.getState().replaceWorkspaceGroups(workspaceId, {
|
||||
groups: before.groups.map((group) => ({ ...group })),
|
||||
assignments: { ...before.assignments },
|
||||
});
|
||||
|
||||
unsubscribe();
|
||||
expect(useSessionManagementStore.getState().groupsByWorkspace[workspaceId]).toBe(before);
|
||||
expect(notifications).toBe(0);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user