github.com/systematiccaos/gorm@v1.22.6/clause/limit_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 TestLimit(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.Limit{
    18  				Limit:  10,
    19  				Offset: 20,
    20  			}},
    21  			"SELECT * FROM `users` LIMIT 10 OFFSET 20", nil,
    22  		},
    23  		{
    24  			[]clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Offset: 20}},
    25  			"SELECT * FROM `users` OFFSET 20", nil,
    26  		},
    27  		{
    28  			[]clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Offset: 20}, clause.Limit{Offset: 30}},
    29  			"SELECT * FROM `users` OFFSET 30", nil,
    30  		},
    31  		{
    32  			[]clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Offset: 20}, clause.Limit{Limit: 10}},
    33  			"SELECT * FROM `users` LIMIT 10 OFFSET 20", nil,
    34  		},
    35  		{
    36  			[]clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Limit: 10, Offset: 20}, clause.Limit{Offset: 30}},
    37  			"SELECT * FROM `users` LIMIT 10 OFFSET 30", nil,
    38  		},
    39  		{
    40  			[]clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Limit: 10, Offset: 20}, clause.Limit{Offset: 30}, clause.Limit{Offset: -10}},
    41  			"SELECT * FROM `users` LIMIT 10", nil,
    42  		},
    43  		{
    44  			[]clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Limit: 10, Offset: 20}, clause.Limit{Offset: 30}, clause.Limit{Limit: -10}},
    45  			"SELECT * FROM `users` OFFSET 30", nil,
    46  		},
    47  		{
    48  			[]clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Limit: 10, Offset: 20}, clause.Limit{Offset: 30}, clause.Limit{Limit: 50}},
    49  			"SELECT * FROM `users` LIMIT 50 OFFSET 30", nil,
    50  		},
    51  	}
    52  
    53  	for idx, result := range results {
    54  		t.Run(fmt.Sprintf("case #%v", idx), func(t *testing.T) {
    55  			checkBuildClauses(t, result.Clauses, result.Result, result.Vars)
    56  		})
    57  	}
    58  }