summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/pages/session/helpers.test.ts
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-03-12 11:32:05 -0500
committerGitHub <[email protected]>2026-03-12 11:32:05 -0500
commitdce7eceb2855bc36a41bc49d9c56d5dcc92a8eb2 (patch)
tree31cd7d7aa33733579134e9a6cf3a61762599d8e0 /packages/app/src/pages/session/helpers.test.ts
parent0e077f748352df6d44c811829baff3c26b3436ac (diff)
downloadopencode-dce7eceb2855bc36a41bc49d9c56d5dcc92a8eb2.tar.gz
opencode-dce7eceb2855bc36a41bc49d9c56d5dcc92a8eb2.zip
chore: cleanup (#17197)
Diffstat (limited to 'packages/app/src/pages/session/helpers.test.ts')
-rw-r--r--packages/app/src/pages/session/helpers.test.ts73
1 files changed, 72 insertions, 1 deletions
diff --git a/packages/app/src/pages/session/helpers.test.ts b/packages/app/src/pages/session/helpers.test.ts
index 9c77c34af..047946fc1 100644
--- a/packages/app/src/pages/session/helpers.test.ts
+++ b/packages/app/src/pages/session/helpers.test.ts
@@ -1,5 +1,13 @@
import { describe, expect, test } from "bun:test"
-import { createOpenReviewFile, createOpenSessionFileTab, focusTerminalById, getTabReorderIndex } from "./helpers"
+import { createMemo, createRoot } from "solid-js"
+import { createStore } from "solid-js/store"
+import {
+ createOpenReviewFile,
+ createOpenSessionFileTab,
+ createSessionTabs,
+ focusTerminalById,
+ getTabReorderIndex,
+} from "./helpers"
describe("createOpenReviewFile", () => {
test("opens and loads selected review file", () => {
@@ -87,3 +95,66 @@ describe("getTabReorderIndex", () => {
expect(getTabReorderIndex(["a", "b", "c"], "a", "missing")).toBeUndefined()
})
})
+
+describe("createSessionTabs", () => {
+ test("normalizes the effective file tab", () => {
+ createRoot((dispose) => {
+ const [state] = createStore({
+ active: undefined as string | undefined,
+ all: ["file://src/a.ts", "context"],
+ })
+ const tabs = createMemo(() => ({ active: () => state.active, all: () => state.all }))
+ const result = createSessionTabs({
+ tabs,
+ pathFromTab: (tab) => (tab.startsWith("file://") ? tab.slice("file://".length) : undefined),
+ normalizeTab: (tab) => (tab.startsWith("file://") ? `norm:${tab.slice("file://".length)}` : tab),
+ })
+
+ expect(result.activeTab()).toBe("norm:src/a.ts")
+ expect(result.activeFileTab()).toBe("norm:src/a.ts")
+ expect(result.closableTab()).toBe("norm:src/a.ts")
+ dispose()
+ })
+ })
+
+ test("prefers context and review fallbacks when no file tab is active", () => {
+ createRoot((dispose) => {
+ const [state] = createStore({
+ active: undefined as string | undefined,
+ all: ["context"],
+ })
+ const tabs = createMemo(() => ({ active: () => state.active, all: () => state.all }))
+ const result = createSessionTabs({
+ tabs,
+ pathFromTab: () => undefined,
+ normalizeTab: (tab) => tab,
+ review: () => true,
+ hasReview: () => true,
+ })
+
+ expect(result.activeTab()).toBe("context")
+ expect(result.closableTab()).toBe("context")
+ dispose()
+ })
+
+ createRoot((dispose) => {
+ const [state] = createStore({
+ active: undefined as string | undefined,
+ all: [],
+ })
+ const tabs = createMemo(() => ({ active: () => state.active, all: () => state.all }))
+ const result = createSessionTabs({
+ tabs,
+ pathFromTab: () => undefined,
+ normalizeTab: (tab) => tab,
+ review: () => true,
+ hasReview: () => true,
+ })
+
+ expect(result.activeTab()).toBe("review")
+ expect(result.activeFileTab()).toBeUndefined()
+ expect(result.closableTab()).toBeUndefined()
+ dispose()
+ })
+ })
+})