limit_test.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package clause_test
  2. import (
  3. "fmt"
  4. "testing"
  5. "github.com/jinzhu/gorm/clause"
  6. )
  7. func TestLimit(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.Limit{
  15. Limit: 10,
  16. Offset: 20,
  17. }},
  18. "SELECT * FROM `users` LIMIT 10 OFFSET 20", nil,
  19. },
  20. {
  21. []clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Limit: 10, Offset: 20}, clause.Limit{Offset: 30}},
  22. "SELECT * FROM `users` LIMIT 10 OFFSET 30", nil,
  23. },
  24. {
  25. []clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Limit: 10, Offset: 20}, clause.Limit{Offset: 30}, clause.Limit{Offset: -10}},
  26. "SELECT * FROM `users` LIMIT 10", nil,
  27. },
  28. {
  29. []clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Limit: 10, Offset: 20}, clause.Limit{Offset: 30}, clause.Limit{Limit: -10}},
  30. "SELECT * FROM `users`", nil,
  31. },
  32. {
  33. []clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Limit: 10, Offset: 20}, clause.Limit{Offset: 30}, clause.Limit{Limit: 50}},
  34. "SELECT * FROM `users` LIMIT 50 OFFSET 30", nil,
  35. },
  36. }
  37. for idx, result := range results {
  38. t.Run(fmt.Sprintf("case #%v", idx), func(t *testing.T) {
  39. checkBuildClauses(t, result.Clauses, result.Result, result.Vars)
  40. })
  41. }
  42. }