test: add geminicli codeassist types tests
- Add TierInfo UnmarshalJSON tests - Add LoadCodeAssistResponse GetTier tests - Add model field tests
This commit is contained in:
139
internal/pkg/geminicli/codeassist_types_test.go
Normal file
139
internal/pkg/geminicli/codeassist_types_test.go
Normal file
@@ -0,0 +1,139 @@
|
||||
package geminicli
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestTierInfo_UnmarshalJSON(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input string
|
||||
wantID string
|
||||
wantErr bool
|
||||
}{
|
||||
{"string_tier", `"free-tier"`, "free-tier", false},
|
||||
{"object_tier", `{"id":"pro-tier"}`, "pro-tier", false},
|
||||
{"empty_string", `""`, "", false},
|
||||
{"null", `null`, "", false},
|
||||
{"invalid_json_empty", ``, "", true},
|
||||
{"invalid_json_whitespace", ` `, "", true},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
var tier TierInfo
|
||||
err := json.Unmarshal([]byte(tt.input), &tier)
|
||||
if tt.wantErr {
|
||||
require.Error(t, err)
|
||||
} else {
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, tt.wantID, tier.ID)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadCodeAssistResponse_GetTier(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
resp LoadCodeAssistResponse
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "paid_tier_priority",
|
||||
resp: LoadCodeAssistResponse{
|
||||
PaidTier: &TierInfo{ID: "pro"},
|
||||
CurrentTier: &TierInfo{ID: "free"},
|
||||
},
|
||||
want: "pro",
|
||||
},
|
||||
{
|
||||
name: "current_tier_only",
|
||||
resp: LoadCodeAssistResponse{
|
||||
CurrentTier: &TierInfo{ID: "free"},
|
||||
},
|
||||
want: "free",
|
||||
},
|
||||
{
|
||||
name: "paid_empty_fallback",
|
||||
resp: LoadCodeAssistResponse{
|
||||
PaidTier: &TierInfo{ID: ""},
|
||||
CurrentTier: &TierInfo{ID: "free"},
|
||||
},
|
||||
want: "free",
|
||||
},
|
||||
{
|
||||
name: "no_tier",
|
||||
resp: LoadCodeAssistResponse{},
|
||||
want: "",
|
||||
},
|
||||
{
|
||||
name: "nil_tiers",
|
||||
resp: LoadCodeAssistResponse{
|
||||
PaidTier: nil,
|
||||
CurrentTier: nil,
|
||||
},
|
||||
want: "",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := tt.resp.GetTier()
|
||||
require.Equal(t, tt.want, got)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestAllowedTier_Fields(t *testing.T) {
|
||||
tier := AllowedTier{
|
||||
ID: "pro",
|
||||
IsDefault: true,
|
||||
}
|
||||
require.Equal(t, "pro", tier.ID)
|
||||
require.True(t, tier.IsDefault)
|
||||
}
|
||||
|
||||
func TestOnboardUserRequest_Fields(t *testing.T) {
|
||||
req := OnboardUserRequest{
|
||||
TierID: "pro",
|
||||
Metadata: LoadCodeAssistMetadata{
|
||||
IDEType: "vscode",
|
||||
Platform: "linux",
|
||||
PluginType: "extension",
|
||||
},
|
||||
}
|
||||
require.Equal(t, "pro", req.TierID)
|
||||
require.Equal(t, "vscode", req.Metadata.IDEType)
|
||||
require.Equal(t, "linux", req.Metadata.Platform)
|
||||
require.Equal(t, "extension", req.Metadata.PluginType)
|
||||
}
|
||||
|
||||
func TestOnboardUserResponse_Fields(t *testing.T) {
|
||||
resp := OnboardUserResponse{
|
||||
Done: true,
|
||||
Response: &OnboardUserResultData{
|
||||
CloudAICompanionProject: "project123",
|
||||
},
|
||||
Name: "test",
|
||||
}
|
||||
require.True(t, resp.Done)
|
||||
require.Equal(t, "test", resp.Name)
|
||||
require.NotNil(t, resp.Response)
|
||||
}
|
||||
|
||||
func TestLoadCodeAssistRequest_Fields(t *testing.T) {
|
||||
req := LoadCodeAssistRequest{
|
||||
Metadata: LoadCodeAssistMetadata{
|
||||
IDEType: "vscode",
|
||||
Platform: "macos",
|
||||
PluginType: "extension",
|
||||
},
|
||||
}
|
||||
require.Equal(t, "vscode", req.Metadata.IDEType)
|
||||
require.Equal(t, "macos", req.Metadata.Platform)
|
||||
require.Equal(t, "extension", req.Metadata.PluginType)
|
||||
}
|
||||
Reference in New Issue
Block a user