|
4 | 4 | "bytes" |
5 | 5 | "context" |
6 | 6 | "fmt" |
| 7 | + "os" |
7 | 8 | "testing" |
8 | 9 | "time" |
9 | 10 |
|
@@ -157,3 +158,74 @@ func TestStack(t *testing.T) { |
157 | 158 | require.NoError(t, err) |
158 | 159 | }) |
159 | 160 | } |
| 161 | + |
| 162 | +func setupTestConfig(t *testing.T, content string) { |
| 163 | + t.Helper() |
| 164 | + f, err := os.CreateTemp("", "render-config") |
| 165 | + require.NoError(t, err) |
| 166 | + t.Cleanup(func() { _ = os.Remove(f.Name()) }) |
| 167 | + |
| 168 | + _, err = f.WriteString(content) |
| 169 | + require.NoError(t, err) |
| 170 | + require.NoError(t, f.Close()) |
| 171 | + |
| 172 | + t.Setenv("RENDER_CLI_CONFIG_PATH", f.Name()) |
| 173 | +} |
| 174 | + |
| 175 | +func TestStackHeader(t *testing.T) { |
| 176 | + t.Run("shows workspace name from config when no override set", func(t *testing.T) { |
| 177 | + setupTestConfig(t, "version: 1\nworkspace: tea-123\nworkspace_name: MyTeam\n") |
| 178 | + |
| 179 | + stack := tui.NewStack() |
| 180 | + stack.Push(tui.ModelWithCmd{Model: &testhelper.SimpleModel{Str: "content"}, Breadcrumb: "Services"}) |
| 181 | + tm := teatest.NewTestModel(t, stack) |
| 182 | + |
| 183 | + tm.Send(tea.WindowSizeMsg{Width: 80, Height: 24}) |
| 184 | + |
| 185 | + teatest.WaitFor(t, tm.Output(), func(bts []byte) bool { |
| 186 | + return bytes.Contains(bts, []byte("MyTeam")) && bytes.Contains(bts, []byte("Services")) |
| 187 | + }, teatest.WithCheckInterval(time.Millisecond*1), teatest.WithDuration(time.Second*3)) |
| 188 | + |
| 189 | + err := tm.Quit() |
| 190 | + require.NoError(t, err) |
| 191 | + }) |
| 192 | + |
| 193 | + t.Run("shows workspace override instead of config workspace name", func(t *testing.T) { |
| 194 | + setupTestConfig(t, "version: 1\nworkspace: tea-123\nworkspace_name: MyTeam\n") |
| 195 | + |
| 196 | + stack := tui.NewStack() |
| 197 | + stack. SetWorkspaceOverride( "[email protected]") |
| 198 | + stack.Push(tui.ModelWithCmd{Model: &testhelper.SimpleModel{Str: "content"}, Breadcrumb: "Workspaces"}) |
| 199 | + tm := teatest.NewTestModel(t, stack) |
| 200 | + |
| 201 | + tm.Send(tea.WindowSizeMsg{Width: 80, Height: 24}) |
| 202 | + |
| 203 | + teatest.WaitFor(t, tm.Output(), func(bts []byte) bool { |
| 204 | + return bytes. Contains( bts, [] byte( "[email protected]")) && |
| 205 | + bytes.Contains(bts, []byte("Workspaces")) && |
| 206 | + !bytes.Contains(bts, []byte("MyTeam")) |
| 207 | + }, teatest.WithCheckInterval(time.Millisecond*1), teatest.WithDuration(time.Second*3)) |
| 208 | + |
| 209 | + err := tm.Quit() |
| 210 | + require.NoError(t, err) |
| 211 | + }) |
| 212 | + |
| 213 | + t.Run("shows only breadcrumb when override is empty string", func(t *testing.T) { |
| 214 | + setupTestConfig(t, "version: 1\nworkspace: tea-123\nworkspace_name: MyTeam\n") |
| 215 | + |
| 216 | + stack := tui.NewStack() |
| 217 | + stack.SetWorkspaceOverride("") |
| 218 | + stack.Push(tui.ModelWithCmd{Model: &testhelper.SimpleModel{Str: "content"}, Breadcrumb: "Workspaces"}) |
| 219 | + tm := teatest.NewTestModel(t, stack) |
| 220 | + |
| 221 | + tm.Send(tea.WindowSizeMsg{Width: 80, Height: 24}) |
| 222 | + |
| 223 | + teatest.WaitFor(t, tm.Output(), func(bts []byte) bool { |
| 224 | + return bytes.Contains(bts, []byte("Workspaces")) && |
| 225 | + !bytes.Contains(bts, []byte("MyTeam")) |
| 226 | + }, teatest.WithCheckInterval(time.Millisecond*1), teatest.WithDuration(time.Second*3)) |
| 227 | + |
| 228 | + err := tm.Quit() |
| 229 | + require.NoError(t, err) |
| 230 | + }) |
| 231 | +} |
0 commit comments