test: add social account domain tests

- Add SocialAccountStatus constants tests
- Add ExtraData Value/Scan tests
- Add SocialAccount ToInfo and field tests
This commit is contained in:
Your Name
2026-05-29 17:52:16 +08:00
parent e47dae6fc6
commit 7a20548204

View File

@@ -1,10 +1,128 @@
package domain package domain
import "testing" import (
"database/sql/driver"
"testing"
"time"
func TestSocialAccountTableName(t *testing.T) { "github.com/stretchr/testify/require"
var account SocialAccount )
if account.TableName() != "user_social_accounts" {
t.Fatalf("unexpected table name: %s", account.TableName()) 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)
}