mirror of
https://github.com/aljazceru/opencode.git
synced 2025-12-24 03:04:21 +01:00
Choose model according to the docs (#1536)
This commit is contained in:
committed by
GitHub
parent
8ad83f71a9
commit
42a5fcead4
228
packages/tui/internal/app/app_test.go
Normal file
228
packages/tui/internal/app/app_test.go
Normal file
@@ -0,0 +1,228 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/sst/opencode-sdk-go"
|
||||
)
|
||||
|
||||
// TestFindModelByFullID tests the findModelByFullID function
|
||||
func TestFindModelByFullID(t *testing.T) {
|
||||
// Create test providers with models
|
||||
providers := []opencode.Provider{
|
||||
{
|
||||
ID: "anthropic",
|
||||
Models: map[string]opencode.Model{
|
||||
"claude-3-opus-20240229": {ID: "claude-3-opus-20240229"},
|
||||
"claude-3-sonnet-20240229": {ID: "claude-3-sonnet-20240229"},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: "openai",
|
||||
Models: map[string]opencode.Model{
|
||||
"gpt-4": {ID: "gpt-4"},
|
||||
"gpt-3.5-turbo": {ID: "gpt-3.5-turbo"},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
fullModelID string
|
||||
expectedFound bool
|
||||
expectedProviderID string
|
||||
expectedModelID string
|
||||
}{
|
||||
{
|
||||
name: "valid full model ID",
|
||||
fullModelID: "anthropic/claude-3-opus-20240229",
|
||||
expectedFound: true,
|
||||
expectedProviderID: "anthropic",
|
||||
expectedModelID: "claude-3-opus-20240229",
|
||||
},
|
||||
{
|
||||
name: "valid full model ID with slash in model name",
|
||||
fullModelID: "openai/gpt-3.5-turbo",
|
||||
expectedFound: true,
|
||||
expectedProviderID: "openai",
|
||||
expectedModelID: "gpt-3.5-turbo",
|
||||
},
|
||||
{
|
||||
name: "invalid format - missing slash",
|
||||
fullModelID: "anthropic",
|
||||
expectedFound: false,
|
||||
},
|
||||
{
|
||||
name: "invalid format - empty string",
|
||||
fullModelID: "",
|
||||
expectedFound: false,
|
||||
},
|
||||
{
|
||||
name: "provider not found",
|
||||
fullModelID: "nonexistent/model",
|
||||
expectedFound: false,
|
||||
},
|
||||
{
|
||||
name: "model not found",
|
||||
fullModelID: "anthropic/nonexistent-model",
|
||||
expectedFound: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
provider, model := findModelByFullID(providers, tt.fullModelID)
|
||||
|
||||
if tt.expectedFound {
|
||||
if provider == nil || model == nil {
|
||||
t.Errorf("Expected to find provider/model, but got nil")
|
||||
return
|
||||
}
|
||||
|
||||
if provider.ID != tt.expectedProviderID {
|
||||
t.Errorf("Expected provider ID %s, got %s", tt.expectedProviderID, provider.ID)
|
||||
}
|
||||
|
||||
if model.ID != tt.expectedModelID {
|
||||
t.Errorf("Expected model ID %s, got %s", tt.expectedModelID, model.ID)
|
||||
}
|
||||
} else {
|
||||
if provider != nil || model != nil {
|
||||
t.Errorf("Expected not to find provider/model, but got provider: %v, model: %v", provider, model)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// TestFindModelByProviderAndModelID tests the findModelByProviderAndModelID function
|
||||
func TestFindModelByProviderAndModelID(t *testing.T) {
|
||||
// Create test providers with models
|
||||
providers := []opencode.Provider{
|
||||
{
|
||||
ID: "anthropic",
|
||||
Models: map[string]opencode.Model{
|
||||
"claude-3-opus-20240229": {ID: "claude-3-opus-20240229"},
|
||||
"claude-3-sonnet-20240229": {ID: "claude-3-sonnet-20240229"},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: "openai",
|
||||
Models: map[string]opencode.Model{
|
||||
"gpt-4": {ID: "gpt-4"},
|
||||
"gpt-3.5-turbo": {ID: "gpt-3.5-turbo"},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
providerID string
|
||||
modelID string
|
||||
expectedFound bool
|
||||
expectedProviderID string
|
||||
expectedModelID string
|
||||
}{
|
||||
{
|
||||
name: "valid provider and model",
|
||||
providerID: "anthropic",
|
||||
modelID: "claude-3-opus-20240229",
|
||||
expectedFound: true,
|
||||
expectedProviderID: "anthropic",
|
||||
expectedModelID: "claude-3-opus-20240229",
|
||||
},
|
||||
{
|
||||
name: "provider not found",
|
||||
providerID: "nonexistent",
|
||||
modelID: "claude-3-opus-20240229",
|
||||
expectedFound: false,
|
||||
},
|
||||
{
|
||||
name: "model not found",
|
||||
providerID: "anthropic",
|
||||
modelID: "nonexistent-model",
|
||||
expectedFound: false,
|
||||
},
|
||||
{
|
||||
name: "both provider and model not found",
|
||||
providerID: "nonexistent",
|
||||
modelID: "nonexistent-model",
|
||||
expectedFound: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
provider, model := findModelByProviderAndModelID(providers, tt.providerID, tt.modelID)
|
||||
|
||||
if tt.expectedFound {
|
||||
if provider == nil || model == nil {
|
||||
t.Errorf("Expected to find provider/model, but got nil")
|
||||
return
|
||||
}
|
||||
|
||||
if provider.ID != tt.expectedProviderID {
|
||||
t.Errorf("Expected provider ID %s, got %s", tt.expectedProviderID, provider.ID)
|
||||
}
|
||||
|
||||
if model.ID != tt.expectedModelID {
|
||||
t.Errorf("Expected model ID %s, got %s", tt.expectedModelID, model.ID)
|
||||
}
|
||||
} else {
|
||||
if provider != nil || model != nil {
|
||||
t.Errorf("Expected not to find provider/model, but got provider: %v, model: %v", provider, model)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// TestFindProviderByID tests the findProviderByID function
|
||||
func TestFindProviderByID(t *testing.T) {
|
||||
// Create test providers
|
||||
providers := []opencode.Provider{
|
||||
{ID: "anthropic"},
|
||||
{ID: "openai"},
|
||||
{ID: "google"},
|
||||
}
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
providerID string
|
||||
expectedFound bool
|
||||
expectedProviderID string
|
||||
}{
|
||||
{
|
||||
name: "provider found",
|
||||
providerID: "anthropic",
|
||||
expectedFound: true,
|
||||
expectedProviderID: "anthropic",
|
||||
},
|
||||
{
|
||||
name: "provider not found",
|
||||
providerID: "nonexistent",
|
||||
expectedFound: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
provider := findProviderByID(providers, tt.providerID)
|
||||
|
||||
if tt.expectedFound {
|
||||
if provider == nil {
|
||||
t.Errorf("Expected to find provider, but got nil")
|
||||
return
|
||||
}
|
||||
|
||||
if provider.ID != tt.expectedProviderID {
|
||||
t.Errorf("Expected provider ID %s, got %s", tt.expectedProviderID, provider.ID)
|
||||
}
|
||||
} else {
|
||||
if provider != nil {
|
||||
t.Errorf("Expected not to find provider, but got %v", provider)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user