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