Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions tests/passed-tests.txt
Original file line number Diff line number Diff line change
Expand Up @@ -287,9 +287,9 @@ TestScanToEmbedded
TestGORMValuer
TestScopes
TestComplexScopes
#TestSerializer
#TestSerializerZeroValue
#TestSerializerAssignFirstOrCreate
TestSerializer
TestSerializerZeroValue
TestSerializerAssignFirstOrCreate
TestSoftDelete
TestDeletedAtUnMarshal
TestDeletedAtOneOr
Expand Down
32 changes: 9 additions & 23 deletions tests/serializer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,27 +66,7 @@ type SerializerStruct struct {
EncryptedString EncryptedString
}

type SerializerPostgresStruct struct {
gorm.Model
Name []byte `gorm:"json"`
Roles Roles `gorm:"serializer:json"`
Roles2 *Roles `gorm:"serializer:json"`
Roles3 *Roles `gorm:"serializer:json;not null"`
Contracts map[string]interface{} `gorm:"serializer:json"`
JobInfo Job `gorm:"type:bytes;serializer:gob"`
CreatedTime int64 `gorm:"serializer:unixtime;type:timestamptz"` // store time in db, use int as field type
UpdatedTime *int64 `gorm:"serializer:unixtime;type:timestamptz"` // store time in db, use int as field type
CustomSerializerString string `gorm:"serializer:custom"`
EncryptedString EncryptedString
}

func (*SerializerPostgresStruct) TableName() string { return "serializer_structs" }

func adaptorSerializerModel(s *SerializerStruct) interface{} {
if DB.Dialector.Name() == "postgres" {
sps := SerializerPostgresStruct(*s)
return &sps
}
return s
}

Expand Down Expand Up @@ -154,6 +134,7 @@ func TestSerializer(t *testing.T) {
data := SerializerStruct{
Name: []byte("jinzhu"),
Roles: []string{"r1", "r2"},
Roles3: &Roles{},
Contracts: map[string]interface{}{"name": "jinzhu", "age": 10},
EncryptedString: EncryptedString("pass"),
CreatedTime: createdAt.Unix(),
Expand All @@ -166,19 +147,21 @@ func TestSerializer(t *testing.T) {
},
CustomSerializerString: "world",
}
// empty := Roles{}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

needs to be removed

// data.Roles3 = &empty

if err := DB.Create(&data).Error; err != nil {
t.Fatalf("failed to create data, got error %v", err)
}

var result SerializerStruct
if err := DB.Where("roles2 IS NULL AND roles3 = ?", "").First(&result, data.ID).Error; err != nil {
if err := DB.Where("\"roles2\" IS NULL AND \"roles3\" = ?", "[]").First(&result, data.ID).Error; err != nil {
t.Fatalf("failed to query data, got error %v", err)
}

tests.AssertEqual(t, result, data)

if err := DB.Model(&result).Update("roles", "").Error; err != nil {
if err := DB.Model(&result).Update("roles", []string{}).Error; err != nil {
t.Fatalf("failed to update data's roles, got error %v", err)
}

Expand All @@ -195,6 +178,8 @@ func TestSerializerZeroValue(t *testing.T) {
}

data := SerializerStruct{}
// If left as is Roles3 value will be "" which will be translated by OracleDB to NULL which is not allowed for Role3 column
data.Roles3 = &Roles{}

if err := DB.Create(&data).Error; err != nil {
t.Fatalf("failed to create data, got error %v", err)
Expand All @@ -207,7 +192,7 @@ func TestSerializerZeroValue(t *testing.T) {

tests.AssertEqual(t, result, data)

if err := DB.Model(&result).Update("roles", "").Error; err != nil {
if err := DB.Model(&result).Update("roles", []string{}).Error; err != nil {
t.Fatalf("failed to update data's roles, got error %v", err)
}

Expand All @@ -228,6 +213,7 @@ func TestSerializerAssignFirstOrCreate(t *testing.T) {
data := SerializerStruct{
Name: []byte("ag9920"),
Roles: []string{"r1", "r2"},
Roles3: &Roles{},
Contracts: map[string]interface{}{"name": "jing1", "age": 11},
EncryptedString: EncryptedString("pass"),
CreatedTime: createdAt.Unix(),
Expand Down