github.com/systematiccaos/gorm@v1.22.6/clause/order_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 TestOrderBy(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.OrderBy{ 18 Columns: []clause.OrderByColumn{{Column: clause.PrimaryColumn, Desc: true}}, 19 }}, 20 "SELECT * FROM `users` ORDER BY `users`.`id` DESC", nil, 21 }, 22 { 23 []clause.Interface{ 24 clause.Select{}, clause.From{}, clause.OrderBy{ 25 Columns: []clause.OrderByColumn{{Column: clause.PrimaryColumn, Desc: true}}, 26 }, clause.OrderBy{ 27 Columns: []clause.OrderByColumn{{Column: clause.Column{Name: "name"}}}, 28 }, 29 }, 30 "SELECT * FROM `users` ORDER BY `users`.`id` DESC,`name`", nil, 31 }, 32 { 33 []clause.Interface{ 34 clause.Select{}, clause.From{}, clause.OrderBy{ 35 Columns: []clause.OrderByColumn{{Column: clause.PrimaryColumn, Desc: true}}, 36 }, clause.OrderBy{ 37 Columns: []clause.OrderByColumn{{Column: clause.Column{Name: "name"}, Reorder: true}}, 38 }, 39 }, 40 "SELECT * FROM `users` ORDER BY `name`", nil, 41 }, 42 { 43 []clause.Interface{ 44 clause.Select{}, clause.From{}, clause.OrderBy{ 45 Expression: clause.Expr{SQL: "FIELD(id, ?)", Vars: []interface{}{[]int{1, 2, 3}}, WithoutParentheses: true}, 46 }, 47 }, 48 "SELECT * FROM `users` ORDER BY FIELD(id, ?,?,?)", []interface{}{1, 2, 3}, 49 }, 50 } 51 52 for idx, result := range results { 53 t.Run(fmt.Sprintf("case #%v", idx), func(t *testing.T) { 54 checkBuildClauses(t, result.Clauses, result.Result, result.Vars) 55 }) 56 } 57 }