Skip to content

Commit b84ceca

Browse files
Fixing serialization tests
1 parent 7c73c9a commit b84ceca

File tree

2 files changed

+12
-26
lines changed

2 files changed

+12
-26
lines changed

tests/passed-tests.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -287,9 +287,9 @@ TestScanToEmbedded
287287
TestGORMValuer
288288
TestScopes
289289
TestComplexScopes
290-
#TestSerializer
291-
#TestSerializerZeroValue
292-
#TestSerializerAssignFirstOrCreate
290+
TestSerializer
291+
TestSerializerZeroValue
292+
TestSerializerAssignFirstOrCreate
293293
TestSoftDelete
294294
TestDeletedAtUnMarshal
295295
TestDeletedAtOneOr

tests/serializer_test.go

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -66,27 +66,7 @@ type SerializerStruct struct {
6666
EncryptedString EncryptedString
6767
}
6868

69-
type SerializerPostgresStruct struct {
70-
gorm.Model
71-
Name []byte `gorm:"json"`
72-
Roles Roles `gorm:"serializer:json"`
73-
Roles2 *Roles `gorm:"serializer:json"`
74-
Roles3 *Roles `gorm:"serializer:json;not null"`
75-
Contracts map[string]interface{} `gorm:"serializer:json"`
76-
JobInfo Job `gorm:"type:bytes;serializer:gob"`
77-
CreatedTime int64 `gorm:"serializer:unixtime;type:timestamptz"` // store time in db, use int as field type
78-
UpdatedTime *int64 `gorm:"serializer:unixtime;type:timestamptz"` // store time in db, use int as field type
79-
CustomSerializerString string `gorm:"serializer:custom"`
80-
EncryptedString EncryptedString
81-
}
82-
83-
func (*SerializerPostgresStruct) TableName() string { return "serializer_structs" }
84-
8569
func adaptorSerializerModel(s *SerializerStruct) interface{} {
86-
if DB.Dialector.Name() == "postgres" {
87-
sps := SerializerPostgresStruct(*s)
88-
return &sps
89-
}
9070
return s
9171
}
9272

@@ -154,6 +134,7 @@ func TestSerializer(t *testing.T) {
154134
data := SerializerStruct{
155135
Name: []byte("jinzhu"),
156136
Roles: []string{"r1", "r2"},
137+
Roles3: &Roles{},
157138
Contracts: map[string]interface{}{"name": "jinzhu", "age": 10},
158139
EncryptedString: EncryptedString("pass"),
159140
CreatedTime: createdAt.Unix(),
@@ -166,19 +147,21 @@ func TestSerializer(t *testing.T) {
166147
},
167148
CustomSerializerString: "world",
168149
}
150+
// empty := Roles{}
151+
// data.Roles3 = &empty
169152

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

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

179162
tests.AssertEqual(t, result, data)
180163

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

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

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

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

208193
tests.AssertEqual(t, result, data)
209194

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

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

0 commit comments

Comments
 (0)