github.com/systematiccaos/gorm@v1.22.6/clause/set_test.go (about)

     1  package clause_test
     2  
     3  import (
     4  	"fmt"
     5  	"sort"
     6  	"strings"
     7  	"testing"
     8  
     9  	"github.com/systematiccaos/gorm/clause"
    10  )
    11  
    12  func TestSet(t *testing.T) {
    13  	results := []struct {
    14  		Clauses []clause.Interface
    15  		Result  string
    16  		Vars    []interface{}
    17  	}{
    18  		{
    19  			[]clause.Interface{
    20  				clause.Update{},
    21  				clause.Set([]clause.Assignment{{clause.PrimaryColumn, 1}}),
    22  			},
    23  			"UPDATE `users` SET `users`.`id`=?", []interface{}{1},
    24  		},
    25  		{
    26  			[]clause.Interface{
    27  				clause.Update{},
    28  				clause.Set([]clause.Assignment{{clause.PrimaryColumn, 1}}),
    29  				clause.Set([]clause.Assignment{{clause.Column{Name: "name"}, "jinzhu"}}),
    30  			},
    31  			"UPDATE `users` SET `name`=?", []interface{}{"jinzhu"},
    32  		},
    33  	}
    34  
    35  	for idx, result := range results {
    36  		t.Run(fmt.Sprintf("case #%v", idx), func(t *testing.T) {
    37  			checkBuildClauses(t, result.Clauses, result.Result, result.Vars)
    38  		})
    39  	}
    40  }
    41  
    42  func TestAssignments(t *testing.T) {
    43  	set := clause.Assignments(map[string]interface{}{
    44  		"name": "jinzhu",
    45  		"age":  18,
    46  	})
    47  
    48  	assignments := []clause.Assignment(set)
    49  
    50  	sort.Slice(assignments, func(i, j int) bool {
    51  		return strings.Compare(assignments[i].Column.Name, assignments[j].Column.Name) > 0
    52  	})
    53  
    54  	if len(assignments) != 2 || assignments[0].Column.Name != "name" || assignments[0].Value.(string) != "jinzhu" || assignments[1].Column.Name != "age" || assignments[1].Value.(int) != 18 {
    55  		t.Errorf("invalid assignments, got %v", assignments)
    56  	}
    57  }