| 1 | package main |
| 2 | |
| 3 | import ( |
| 4 | "testing" |
| 5 | |
| 6 | "reasonix/internal/config" |
| 7 | ) |
| 8 | |
| 9 | func TestDraftEffortFollowsItsModel(t *testing.T) { |
| 10 | isolateDesktopUserDirs(t) |
| 11 | app := NewApp() |
| 12 | baseline := app.defaultDraftSettings("global", "") |
| 13 | high := "high" |
| 14 | tab := &WorkspaceTab{ID: "active", model: "another/model", effort: &high} |
| 15 | app.tabs = map[string]*WorkspaceTab{tab.ID: tab} |
| 16 | app.activeTabID = tab.ID |
| 17 | if got := app.defaultDraftSettings("global", ""); got.Model != baseline.Model || got.Effort != "" { |
| 18 | t.Fatalf("cross-model inherited effort: %+v", got) |
| 19 | } |
| 20 | tab.model = baseline.Model |
| 21 | if got := app.defaultDraftSettings("global", ""); got.Effort != high { |
| 22 | t.Fatalf("same model lost effort: %+v", got) |
| 23 | } |
| 24 | } |
| 25 | |
| 26 | func TestSettingsReasoningMetadataDoesNotBecomeAnOverride(t *testing.T) { |
| 27 | e := config.ProviderEntry{Name: "legacy", Kind: "openai", BaseURL: "https://tokenrhythm.studio/v1", Models: []string{"deepseek-flash", "unknown"}} |
| 28 | views := providerModelCapabilitiesForView(e, e.Models) |
| 29 | if len(views) != 2 || views[0].Reasoning.State != "supported" || views[0].Reasoning.Default != "high" || views[1].Reasoning.State != "unknown" { |
| 30 | t.Fatalf("views = %+v", views) |
| 31 | } |
| 32 | if len(e.ModelOverrides) != 0 || len(e.SupportedEfforts) != 0 { |
| 33 | t.Fatal("metadata mutated config") |
| 34 | } |
| 35 | } |
| 36 |