mirror of https://github.com/go-gorm/gorm.git
CHORE add unittest test function ConvertMapToValueForCreate (#6846)
* CHORE add unittest test function ConvertMapToValueForCreate * CHORE move the test cases located in the files convert_map_test.go and visit_map_test.go into the file helper_test.go.
This commit is contained in:
parent
d81ae6f701
commit
52404cddbb
|
@ -0,0 +1,97 @@
|
|||
package callbacks
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/clause"
|
||||
)
|
||||
|
||||
func TestLoadOrStoreVisitMap(t *testing.T) {
|
||||
var vm visitMap
|
||||
var loaded bool
|
||||
type testM struct {
|
||||
Name string
|
||||
}
|
||||
|
||||
t1 := testM{Name: "t1"}
|
||||
t2 := testM{Name: "t2"}
|
||||
t3 := testM{Name: "t3"}
|
||||
|
||||
vm = make(visitMap)
|
||||
if loaded = loadOrStoreVisitMap(&vm, reflect.ValueOf(&t1)); loaded {
|
||||
t.Fatalf("loaded should be false")
|
||||
}
|
||||
|
||||
if loaded = loadOrStoreVisitMap(&vm, reflect.ValueOf(&t1)); !loaded {
|
||||
t.Fatalf("loaded should be true")
|
||||
}
|
||||
|
||||
// t1 already exist but t2 not
|
||||
if loaded = loadOrStoreVisitMap(&vm, reflect.ValueOf([]*testM{&t1, &t2, &t3})); loaded {
|
||||
t.Fatalf("loaded should be false")
|
||||
}
|
||||
|
||||
if loaded = loadOrStoreVisitMap(&vm, reflect.ValueOf([]*testM{&t2, &t3})); !loaded {
|
||||
t.Fatalf("loaded should be true")
|
||||
}
|
||||
}
|
||||
|
||||
func TestConvertMapToValuesForCreate(t *testing.T) {
|
||||
testCase := []struct {
|
||||
name string
|
||||
input map[string]interface{}
|
||||
expect clause.Values
|
||||
}{
|
||||
{
|
||||
name: "Test convert string value",
|
||||
input: map[string]interface{}{
|
||||
"name": "my name",
|
||||
},
|
||||
expect: clause.Values{
|
||||
Columns: []clause.Column{{Name: "name"}},
|
||||
Values: [][]interface{}{{"my name"}},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Test convert int value",
|
||||
input: map[string]interface{}{
|
||||
"age": 18,
|
||||
},
|
||||
expect: clause.Values{
|
||||
Columns: []clause.Column{{Name: "age"}},
|
||||
Values: [][]interface{}{{18}},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Test convert float value",
|
||||
input: map[string]interface{}{
|
||||
"score": 99.5,
|
||||
},
|
||||
expect: clause.Values{
|
||||
Columns: []clause.Column{{Name: "score"}},
|
||||
Values: [][]interface{}{{99.5}},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Test convert bool value",
|
||||
input: map[string]interface{}{
|
||||
"active": true,
|
||||
},
|
||||
expect: clause.Values{
|
||||
Columns: []clause.Column{{Name: "active"}},
|
||||
Values: [][]interface{}{{true}},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCase {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
actual := ConvertMapToValuesForCreate(&gorm.Statement{}, tc.input)
|
||||
if !reflect.DeepEqual(actual, tc.expect) {
|
||||
t.Errorf("expect %v got %v", tc.expect, actual)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
package callbacks
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestLoadOrStoreVisitMap(t *testing.T) {
|
||||
var vm visitMap
|
||||
var loaded bool
|
||||
type testM struct {
|
||||
Name string
|
||||
}
|
||||
|
||||
t1 := testM{Name: "t1"}
|
||||
t2 := testM{Name: "t2"}
|
||||
t3 := testM{Name: "t3"}
|
||||
|
||||
vm = make(visitMap)
|
||||
if loaded = loadOrStoreVisitMap(&vm, reflect.ValueOf(&t1)); loaded {
|
||||
t.Fatalf("loaded should be false")
|
||||
}
|
||||
|
||||
if loaded = loadOrStoreVisitMap(&vm, reflect.ValueOf(&t1)); !loaded {
|
||||
t.Fatalf("loaded should be true")
|
||||
}
|
||||
|
||||
// t1 already exist but t2 not
|
||||
if loaded = loadOrStoreVisitMap(&vm, reflect.ValueOf([]*testM{&t1, &t2, &t3})); loaded {
|
||||
t.Fatalf("loaded should be false")
|
||||
}
|
||||
|
||||
if loaded = loadOrStoreVisitMap(&vm, reflect.ValueOf([]*testM{&t2, &t3})); !loaded {
|
||||
t.Fatalf("loaded should be true")
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue