返回 DeepSeek-Reasonix
management-navigation.test.ts
根目录 / desktop / frontend / src / __tests__ / management-navigation.test.ts
1 import assert from "node:assert/strict";
2 import { useAppNavigationStore as store } from "../store/appNavigation";
3 import { SETTINGS_NAV_TABS } from "../components/SettingsNavigation";
4 store.getState().openPage({ kind: "automation" });
5 const link = store.getState().generation;
6 store.getState().openPage({ kind: "trash" });
7 store.getState().returnFromAutomationLink(link);
8 assert.equal(store.getState().page.kind, "trash", "late linked-session result cannot replace a newer page");
9 store.getState().openPage({ kind: "automation" });
10 store.getState().returnFromAutomationLink(store.getState().generation);
11 assert.equal(store.getState().page.kind, "workspace");
12 assert.equal(store.getState().automationReturn, true);
13 store.getState().enterConversation();
14 assert.equal(store.getState().automationReturn, false);
15 for (const tab of SETTINGS_NAV_TABS) {
16 store.getState().openPage({ kind: "settings", tab });
17 assert.deepEqual(store.getState().page, { kind: "settings", tab }, `openPage preserves ${tab}`);
18 store.getState().setSettingsTarget(null);
19 assert.equal(store.getState().page.kind, "workspace");
20 assert.equal(store.getState().lastSettingsTarget, tab, `closing remembers ${tab}`);
21 store.getState().setSettingsTarget(store.getState().lastSettingsTarget);
22 assert.deepEqual(store.getState().page, { kind: "settings", tab }, `reopening preserves ${tab}`);
23 store.getState().setSettingsTarget((previous) => {
24 assert.equal(previous, tab);
25 return previous;
26 });
27 assert.deepEqual(store.getState().page, { kind: "settings", tab }, `functional updates preserve ${tab}`);
28 }
29 store.getState().returnToWorkspace();
30 assert.equal(store.getState().visitedTrash, true);
31 assert.equal(store.getState().visitedAutomation, true);
32 console.log("PASS all settings routes, remembered targets, functional updates, page retention and linked-session generations");
33
33 lines TYPESCRIPT