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:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user