| 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 |