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
					
				
							
								
								
									
										97
									
								
								callbacks/helper_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								callbacks/helper_test.go
									
									
									
									
									
										Normal file
									
								
							| @ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Chef
						Chef