test: update Expr build test
This commit is contained in:
		
							parent
							
								
									7973af40d4
								
							
						
					
					
						commit
						42e44444cc
					
				@ -156,6 +156,18 @@ func TestExpression(t *testing.T) {
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
		ExpectedVars: []interface{}{"a", "b"},
 | 
							ExpectedVars: []interface{}{"a", "b"},
 | 
				
			||||||
		Result:       "`column-name` NOT IN (?,?)",
 | 
							Result:       "`column-name` NOT IN (?,?)",
 | 
				
			||||||
 | 
						}, {
 | 
				
			||||||
 | 
							Expressions: []clause.Expression{
 | 
				
			||||||
 | 
								clause.Eq{Column: clause.Expr{SQL: "SUM(?)", Vars: []interface{}{clause.Column{Name: "id"}}}, Value: 100},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							ExpectedVars: []interface{}{100},
 | 
				
			||||||
 | 
							Result:       "SUM(`id`) = ?",
 | 
				
			||||||
 | 
						}, {
 | 
				
			||||||
 | 
							Expressions: []clause.Expression{
 | 
				
			||||||
 | 
								clause.Gte{Column: clause.Expr{SQL: "SUM(?)", Vars: []interface{}{clause.Column{Table: "users", Name: "id"}}}, Value: 100},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							ExpectedVars: []interface{}{100},
 | 
				
			||||||
 | 
							Result:       "SUM(`users`.`id`) >= ?",
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for idx, result := range results {
 | 
						for idx, result := range results {
 | 
				
			||||||
 | 
				
			|||||||
@ -3,12 +3,9 @@ package gorm
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"reflect"
 | 
						"reflect"
 | 
				
			||||||
	"strings"
 | 
					 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"gorm.io/gorm/clause"
 | 
						"gorm.io/gorm/clause"
 | 
				
			||||||
	"gorm.io/gorm/logger"
 | 
					 | 
				
			||||||
	"gorm.io/gorm/schema"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestWhereCloneCorruption(t *testing.T) {
 | 
					func TestWhereCloneCorruption(t *testing.T) {
 | 
				
			||||||
@ -37,42 +34,3 @@ func TestWhereCloneCorruption(t *testing.T) {
 | 
				
			|||||||
		})
 | 
							})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
var _ Dialector = new(dummyDialector)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type dummyDialector struct{}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (dummyDialector) Name() string         { return "dummy" }
 | 
					 | 
				
			||||||
func (dummyDialector) Initialize(*DB) error { return nil }
 | 
					 | 
				
			||||||
func (dummyDialector) DefaultValueOf(field *schema.Field) clause.Expression {
 | 
					 | 
				
			||||||
	return clause.Expr{SQL: "DEFAULT"}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
func (dummyDialector) Migrator(*DB) Migrator { return nil }
 | 
					 | 
				
			||||||
func (dummyDialector) BindVarTo(writer clause.Writer, stmt *Statement, v interface{}) {
 | 
					 | 
				
			||||||
	writer.WriteByte('?')
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
func (dummyDialector) QuoteTo(writer clause.Writer, str string) { writer.WriteString("`" + str + "`") }
 | 
					 | 
				
			||||||
func (dummyDialector) Explain(sql string, vars ...interface{}) string {
 | 
					 | 
				
			||||||
	return logger.ExplainSQL(sql, nil, `"`, vars...)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
func (dummyDialector) DataTypeOf(*schema.Field) string { return "" }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var db, _ = Open(dummyDialector{})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestStatement_WriteQuoted(t *testing.T) {
 | 
					 | 
				
			||||||
	s := Statement{DB: db}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	testdata := map[string]clause.Expression{
 | 
					 | 
				
			||||||
		"SUM(`users`.`id`)": clause.Expr{SQL: "SUM(?)", Vars: []interface{}{clause.Column{Table: "users", Name: "id"}}},
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for result, expr := range testdata {
 | 
					 | 
				
			||||||
		s.WriteQuoted(expr)
 | 
					 | 
				
			||||||
		if s.SQL.String() != result {
 | 
					 | 
				
			||||||
			t.Errorf("WriteQuoted test fail, expected: %s, got %s", result, s.SQL.String())
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		s.SQL = strings.Builder{}
 | 
					 | 
				
			||||||
		s.Vars = []interface{}{}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user