- Add SocialAccountStatus constants tests - Add ExtraData Value/Scan tests - Add SocialAccount ToInfo and field tests
129 lines
2.6 KiB
Go
129 lines
2.6 KiB
Go
package domain
|
|
|
|
import (
|
|
"database/sql/driver"
|
|
"testing"
|
|
"time"
|
|
|
|
"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)
|
|
}
|