| 1 | package main |
| 2 | |
| 3 | import "testing" |
| 4 | |
| 5 | func TestGlobalFolderAfterProjectCreatedFollowsGlobalConversations(t *testing.T) { |
| 6 | cases := []struct { |
| 7 | name string |
| 8 | openGlobal func(*App) error |
| 9 | wantGlobal bool |
| 10 | }{ |
| 11 | {name: "untouched", openGlobal: func(*App) error { return nil }}, |
| 12 | {name: "draft target without a conversation", openGlobal: func(a *App) error { |
| 13 | _, _ = a.OpenSessionDraftForTarget("global", "") |
| 14 | return nil |
| 15 | }}, |
| 16 | {name: "blank conversation", wantGlobal: true, openGlobal: func(a *App) error { |
| 17 | _, err := a.EnsureBlankSurface("global", "") |
| 18 | return err |
| 19 | }}, |
| 20 | } |
| 21 | for _, tc := range cases { |
| 22 | t.Run(tc.name, func(t *testing.T) { |
| 23 | isolateDesktopUserDirs(t) |
| 24 | app := NewApp() |
| 25 | if err := tc.openGlobal(app); err != nil { |
| 26 | t.Fatalf("open global surface: %v", err) |
| 27 | } |
| 28 | if _, err := app.SwitchWorkspace(t.TempDir()); err != nil { |
| 29 | t.Fatalf("SwitchWorkspace: %v", err) |
| 30 | } |
| 31 | gotGlobal := false |
| 32 | for _, node := range mustListProjectTree(t, app) { |
| 33 | gotGlobal = gotGlobal || node.Kind == "global_folder" |
| 34 | } |
| 35 | if gotGlobal != tc.wantGlobal { |
| 36 | t.Fatalf("Global folder listed = %v, want %v after a project was created", gotGlobal, tc.wantGlobal) |
| 37 | } |
| 38 | }) |
| 39 | } |
| 40 | } |
| 41 |