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  }