Update tests to cover building clause.Eq and clause.Neq when value could be a nil pointer of a primitive
				
					
				
			This commit is contained in:
		
							parent
							
								
									e1952924e2
								
							
						
					
					
						commit
						3c9c3739db
					
				@ -101,3 +101,52 @@ func TestNamedExpr(t *testing.T) {
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestExpression(t *testing.T) {
 | 
			
		||||
	column := "column-name"
 | 
			
		||||
	results := []struct {
 | 
			
		||||
		Expressions    []clause.Expression
 | 
			
		||||
		Result string
 | 
			
		||||
	}{{
 | 
			
		||||
		Expressions: []clause.Expression{
 | 
			
		||||
			clause.Eq{Column: column, Value: "column-value"},
 | 
			
		||||
		},
 | 
			
		||||
		Result: "`column-name` = ?",
 | 
			
		||||
	},{
 | 
			
		||||
		Expressions: []clause.Expression{
 | 
			
		||||
			clause.Eq{Column: column, Value: nil},
 | 
			
		||||
			clause.Eq{Column: column, Value: (*string)(nil)},
 | 
			
		||||
			clause.Eq{Column: column, Value: (*int)(nil)},
 | 
			
		||||
			clause.Eq{Column: column, Value: (*bool)(nil)},
 | 
			
		||||
			clause.Eq{Column: column, Value: (interface{})(nil)},
 | 
			
		||||
		},
 | 
			
		||||
		Result: "`column-name` IS NULL",
 | 
			
		||||
	},{
 | 
			
		||||
		Expressions: []clause.Expression{
 | 
			
		||||
			clause.Neq{Column: column, Value: "column-value"},
 | 
			
		||||
		},
 | 
			
		||||
		Result: "`column-name` <> ?",
 | 
			
		||||
	},{
 | 
			
		||||
		Expressions: []clause.Expression{
 | 
			
		||||
			clause.Neq{Column: column, Value: nil},
 | 
			
		||||
			clause.Neq{Column: column, Value: (*string)(nil)},
 | 
			
		||||
			clause.Neq{Column: column, Value: (*int)(nil)},
 | 
			
		||||
			clause.Neq{Column: column, Value: (*bool)(nil)},
 | 
			
		||||
			clause.Neq{Column: column, Value: (interface{})(nil)},
 | 
			
		||||
		},
 | 
			
		||||
		Result: "`column-name` IS NOT NULL",
 | 
			
		||||
	}}
 | 
			
		||||
 | 
			
		||||
	for idx, result := range results {
 | 
			
		||||
		for idy, expression := range result.Expressions {
 | 
			
		||||
			t.Run(fmt.Sprintf("case #%v.%v", idx, idy), func(t *testing.T) {
 | 
			
		||||
				user, _ := schema.Parse(&tests.User{}, &sync.Map{}, db.NamingStrategy)
 | 
			
		||||
				stmt := &gorm.Statement{DB: db, Table: user.Table, Schema: user, Clauses: map[string]clause.Clause{}}
 | 
			
		||||
				expression.Build(stmt)
 | 
			
		||||
				if stmt.SQL.String() != result.Result {
 | 
			
		||||
					t.Errorf("generated SQL is not equal, expects %v, but got %v", result.Result, stmt.SQL.String())
 | 
			
		||||
				}
 | 
			
		||||
			})
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user