order_by_test.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package clause_test
  2. import (
  3. "fmt"
  4. "testing"
  5. "github.com/jinzhu/gorm/clause"
  6. )
  7. func TestOrderBy(t *testing.T) {
  8. results := []struct {
  9. Clauses []clause.Interface
  10. Result string
  11. Vars []interface{}
  12. }{
  13. {
  14. []clause.Interface{clause.Select{}, clause.From{}, clause.OrderBy{
  15. Columns: []clause.OrderByColumn{{Column: clause.PrimaryColumn, Desc: true}},
  16. }},
  17. "SELECT * FROM `users` ORDER BY `users`.`id` DESC", nil,
  18. },
  19. {
  20. []clause.Interface{
  21. clause.Select{}, clause.From{}, clause.OrderBy{
  22. Columns: []clause.OrderByColumn{{Column: clause.PrimaryColumn, Desc: true}},
  23. }, clause.OrderBy{
  24. Columns: []clause.OrderByColumn{{Column: clause.Column{Name: "name"}}},
  25. },
  26. },
  27. "SELECT * FROM `users` ORDER BY `users`.`id` DESC,`name`", nil,
  28. },
  29. {
  30. []clause.Interface{
  31. clause.Select{}, clause.From{}, clause.OrderBy{
  32. Columns: []clause.OrderByColumn{{Column: clause.PrimaryColumn, Desc: true}},
  33. }, clause.OrderBy{
  34. Columns: []clause.OrderByColumn{{Column: clause.Column{Name: "name"}, Reorder: true}},
  35. },
  36. },
  37. "SELECT * FROM `users` ORDER BY `name`", nil,
  38. },
  39. }
  40. for idx, result := range results {
  41. t.Run(fmt.Sprintf("case #%v", idx), func(t *testing.T) {
  42. checkBuildClauses(t, result.Clauses, result.Result, result.Vars)
  43. })
  44. }
  45. }