|
6 | 6 | "io/fs" |
7 | 7 | "os" |
8 | 8 | "path/filepath" |
| 9 | + "reflect" |
9 | 10 | "runtime" |
10 | 11 | "strings" |
11 | 12 | "testing" |
@@ -178,6 +179,49 @@ func TestUpsertProviderTightensExistingConfigFilePermissions(t *testing.T) { |
178 | 179 | } |
179 | 180 | } |
180 | 181 |
|
| 182 | +func TestSetFavoriteModelsPersistsUserPreferences(t *testing.T) { |
| 183 | + path := filepath.Join(t.TempDir(), "zero.json") |
| 184 | + writeConfigFixture(t, path, FileConfig{ |
| 185 | + ActiveProvider: "openai", |
| 186 | + Providers: []ProviderProfile{ |
| 187 | + {Name: "openai", ProviderKind: ProviderKindOpenAI, Model: "gpt-4.1"}, |
| 188 | + }, |
| 189 | + }, 0o600) |
| 190 | + |
| 191 | + cfg, err := SetFavoriteModels(path, []string{" qwen3-coder:480b ", "", "rnj-1:8b", "qwen3-coder:480b"}) |
| 192 | + if err != nil { |
| 193 | + t.Fatalf("SetFavoriteModels() error = %v", err) |
| 194 | + } |
| 195 | + |
| 196 | + want := []string{"qwen3-coder:480b", "rnj-1:8b"} |
| 197 | + if !reflect.DeepEqual(cfg.Preferences.FavoriteModels, want) { |
| 198 | + t.Fatalf("FavoriteModels = %#v, want %#v", cfg.Preferences.FavoriteModels, want) |
| 199 | + } |
| 200 | + persisted := readConfigFixture(t, path) |
| 201 | + if !reflect.DeepEqual(persisted.Preferences.FavoriteModels, want) { |
| 202 | + t.Fatalf("persisted FavoriteModels = %#v, want %#v", persisted.Preferences.FavoriteModels, want) |
| 203 | + } |
| 204 | + if persisted.ActiveProvider != "openai" || len(persisted.Providers) != 1 { |
| 205 | + t.Fatalf("provider config was not preserved: %#v", persisted) |
| 206 | + } |
| 207 | +} |
| 208 | + |
| 209 | +func TestSetFavoriteModelsCreatesMissingConfig(t *testing.T) { |
| 210 | + path := filepath.Join(t.TempDir(), "zero", "config.json") |
| 211 | + |
| 212 | + cfg, err := SetFavoriteModels(path, []string{"glm-5.1"}) |
| 213 | + if err != nil { |
| 214 | + t.Fatalf("SetFavoriteModels() error = %v", err) |
| 215 | + } |
| 216 | + |
| 217 | + if !reflect.DeepEqual(cfg.Preferences.FavoriteModels, []string{"glm-5.1"}) { |
| 218 | + t.Fatalf("FavoriteModels = %#v, want glm-5.1", cfg.Preferences.FavoriteModels) |
| 219 | + } |
| 220 | + if _, err := os.Stat(path); err != nil { |
| 221 | + t.Fatalf("expected config file to be created: %v", err) |
| 222 | + } |
| 223 | +} |
| 224 | + |
181 | 225 | func writeConfigFixture(t *testing.T, path string, cfg FileConfig, mode fs.FileMode) []byte { |
182 | 226 | t.Helper() |
183 | 227 |
|
|
0 commit comments