Compare commits
2 Commits
cd5dae4778
...
7a20548204
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7a20548204 | ||
|
|
e47dae6fc6 |
@@ -1,10 +1,128 @@
|
||||
package domain
|
||||
|
||||
import "testing"
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
func TestSocialAccountTableName(t *testing.T) {
|
||||
var account SocialAccount
|
||||
if account.TableName() != "user_social_accounts" {
|
||||
t.Fatalf("unexpected table name: %s", account.TableName())
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestSocialAccountStatus_Constants(t *testing.T) {
|
||||
require.Equal(t, SocialAccountStatus(1), SocialAccountStatusActive)
|
||||
require.Equal(t, SocialAccountStatus(0), SocialAccountStatusInactive)
|
||||
require.Equal(t, SocialAccountStatus(2), SocialAccountStatusDisabled)
|
||||
}
|
||||
|
||||
func TestExtraData_Value(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
data ExtraData
|
||||
want driver.Value
|
||||
}{
|
||||
{
|
||||
name: "nil",
|
||||
data: nil,
|
||||
want: nil,
|
||||
},
|
||||
{
|
||||
name: "empty",
|
||||
data: ExtraData{},
|
||||
want: []byte("{}"),
|
||||
},
|
||||
{
|
||||
name: "with_data",
|
||||
data: ExtraData{"key": "value", "num": 42},
|
||||
want: []byte(`{"key":"value","num":42}`),
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, err := tt.data.Value()
|
||||
require.NoError(t, err)
|
||||
if tt.want == nil {
|
||||
require.Nil(t, got)
|
||||
} else {
|
||||
require.Equal(t, tt.want, got)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestExtraData_Scan(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
value interface{}
|
||||
want ExtraData
|
||||
wantErr bool
|
||||
}{
|
||||
{
|
||||
name: "nil",
|
||||
value: nil,
|
||||
want: nil,
|
||||
},
|
||||
{
|
||||
name: "valid_json",
|
||||
value: []byte(`{"key":"value"}`),
|
||||
want: ExtraData{"key": "value"},
|
||||
},
|
||||
{
|
||||
name: "invalid_type",
|
||||
value: "not bytes",
|
||||
want: nil,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
var e ExtraData
|
||||
err := e.Scan(tt.value)
|
||||
if tt.wantErr {
|
||||
require.Error(t, err)
|
||||
} else {
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, tt.want, e)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestSocialAccount_ToInfo(t *testing.T) {
|
||||
now := time.Now()
|
||||
sa := &SocialAccount{
|
||||
ID: 1,
|
||||
Provider: "github",
|
||||
Nickname: "testuser",
|
||||
Avatar: "https://example.com/avatar.png",
|
||||
Status: SocialAccountStatusActive,
|
||||
CreatedAt: &now,
|
||||
}
|
||||
|
||||
info := sa.ToInfo()
|
||||
require.NotNil(t, info)
|
||||
require.Equal(t, sa.ID, info.ID)
|
||||
require.Equal(t, sa.Provider, info.Provider)
|
||||
require.Equal(t, sa.Nickname, info.Nickname)
|
||||
require.Equal(t, sa.Avatar, info.Avatar)
|
||||
require.Equal(t, sa.Status, info.Status)
|
||||
require.Equal(t, sa.CreatedAt, info.CreatedAt)
|
||||
}
|
||||
|
||||
func TestSocialAccountInfo_Fields(t *testing.T) {
|
||||
now := time.Now()
|
||||
info := SocialAccountInfo{
|
||||
ID: 1,
|
||||
Provider: "google",
|
||||
Nickname: "user",
|
||||
Avatar: "avatar.png",
|
||||
Status: SocialAccountStatusInactive,
|
||||
CreatedAt: &now,
|
||||
}
|
||||
|
||||
require.Equal(t, int64(1), info.ID)
|
||||
require.Equal(t, "google", info.Provider)
|
||||
require.Equal(t, "user", info.Nickname)
|
||||
require.Equal(t, "avatar.png", info.Avatar)
|
||||
require.Equal(t, SocialAccountStatusInactive, info.Status)
|
||||
}
|
||||
|
||||
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