github.com/systematiccaos/gorm@v1.22.6/clause/set_test.go (about) 1 package clause_test 2 3 import ( 4 "fmt" 5 "sort" 6 "strings" 7 "testing" 8 9 "github.com/systematiccaos/gorm/clause" 10 ) 11 12 func TestSet(t *testing.T) { 13 results := []struct { 14 Clauses []clause.Interface 15 Result string 16 Vars []interface{} 17 }{ 18 { 19 []clause.Interface{ 20 clause.Update{}, 21 clause.Set([]clause.Assignment{{clause.PrimaryColumn, 1}}), 22 }, 23 "UPDATE `users` SET `users`.`id`=?", []interface{}{1}, 24 }, 25 { 26 []clause.Interface{ 27 clause.Update{}, 28 clause.Set([]clause.Assignment{{clause.PrimaryColumn, 1}}), 29 clause.Set([]clause.Assignment{{clause.Column{Name: "name"}, "jinzhu"}}), 30 }, 31 "UPDATE `users` SET `name`=?", []interface{}{"jinzhu"}, 32 }, 33 } 34 35 for idx, result := range results { 36 t.Run(fmt.Sprintf("case #%v", idx), func(t *testing.T) { 37 checkBuildClauses(t, result.Clauses, result.Result, result.Vars) 38 }) 39 } 40 } 41 42 func TestAssignments(t *testing.T) { 43 set := clause.Assignments(map[string]interface{}{ 44 "name": "jinzhu", 45 "age": 18, 46 }) 47 48 assignments := []clause.Assignment(set) 49 50 sort.Slice(assignments, func(i, j int) bool { 51 return strings.Compare(assignments[i].Column.Name, assignments[j].Column.Name) > 0 52 }) 53 54 if len(assignments) != 2 || assignments[0].Column.Name != "name" || assignments[0].Value.(string) != "jinzhu" || assignments[1].Column.Name != "age" || assignments[1].Value.(int) != 18 { 55 t.Errorf("invalid assignments, got %v", assignments) 56 } 57 }