返回 DeepSeek-Reasonix
tabs_session_reopen_test.go
根目录 / desktop / tabs_session_reopen_test.go
1 package main
2
3 import (
4 "testing"
5
6 "reasonix/internal/session"
7 )
8
9 func TestSingleSurfaceReopenUsesNewTabBindingForStableSession(t *testing.T) {
10 isolateDesktopUserDirs(t)
11 app := NewApp()
12 t.Cleanup(app.closeSessionServices)
13 const sessionID = "canonical-session-a"
14 if _, err := app.desktopSessionService("").Create(t.Context(), session.CreateOptions{
15 SessionID: sessionID, CWD: globalWorkspaceRoot(), Origin: session.SessionOriginNew,
16 }); err != nil {
17 t.Fatal(err)
18 }
19 app.tabs = map[string]*WorkspaceTab{
20 "a": {ID: "a", Scope: "global", TopicID: "topic_a", TopicTitle: "a", SessionID: sessionID, disabledMCP: map[string]ServerView{}},
21 "b": {ID: "b", Scope: "global", TopicID: "topic_b", TopicTitle: "b", disabledMCP: map[string]ServerView{}},
22 }
23 app.tabOrder = []string{"a", "b"}
24 app.activeTabID = "a"
25 oldTabID := app.tabs["a"].ID
26
27 if _, err := app.keepOnlyVisibleTab("b"); err != nil {
28 t.Fatalf("keepOnlyVisibleTab: %v", err)
29 }
30 if app.tabs[oldTabID] != nil {
31 t.Fatalf("old tab %q survived single-surface pruning", oldTabID)
32 }
33
34 app.mu.Lock()
35 newTabID := app.newUniqueTabIDLocked()
36 app.tabs[newTabID] = &WorkspaceTab{
37 ID: newTabID, Scope: "global", TopicID: "topic_a", TopicTitle: "a",
38 SessionID: sessionID, disabledMCP: map[string]ServerView{},
39 }
40 app.mu.Unlock()
41 if newTabID == oldTabID {
42 t.Fatalf("reopened tab reused pruned id %q", oldTabID)
43 }
44 if got := app.tabs[newTabID].SessionID; got != sessionID {
45 t.Fatalf("reopened session id = %q, want stable %q", got, sessionID)
46 }
47 }
48
48 lines GO