github.com/systematiccaos/gorm@v1.22.6/clause/group_by_test.go (about) 1 package clause_test 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/systematiccaos/gorm/clause" 8 ) 9 10 func TestGroupBy(t *testing.T) { 11 results := []struct { 12 Clauses []clause.Interface 13 Result string 14 Vars []interface{} 15 }{ 16 { 17 []clause.Interface{clause.Select{}, clause.From{}, clause.GroupBy{ 18 Columns: []clause.Column{{Name: "role"}}, 19 Having: []clause.Expression{clause.Eq{"role", "admin"}}, 20 }}, 21 "SELECT * FROM `users` GROUP BY `role` HAVING `role` = ?", []interface{}{"admin"}, 22 }, 23 { 24 []clause.Interface{clause.Select{}, clause.From{}, clause.GroupBy{ 25 Columns: []clause.Column{{Name: "role"}}, 26 Having: []clause.Expression{clause.Eq{"role", "admin"}}, 27 }, clause.GroupBy{ 28 Columns: []clause.Column{{Name: "gender"}}, 29 Having: []clause.Expression{clause.Neq{"gender", "U"}}, 30 }}, 31 "SELECT * FROM `users` GROUP BY `role`,`gender` HAVING `role` = ? AND `gender` <> ?", []interface{}{"admin", "U"}, 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 }