| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- // Copyright 2017 The Xorm Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package xorm
- import (
- "testing"
- "github.com/go-xorm/builder"
- "github.com/stretchr/testify/assert"
- )
- func TestBuilder(t *testing.T) {
- assert.NoError(t, prepareEngine())
- const (
- OpEqual int = iota
- OpGreatThan
- OpLessThan
- )
- type Condition struct {
- Id int64
- TableName string
- ColName string
- Op int
- Value string
- }
- err := testEngine.CreateTables(&Condition{})
- assert.NoError(t, err)
- _, err = testEngine.Insert(&Condition{TableName: "table1", ColName: "col1", Op: OpEqual, Value: "1"})
- assert.NoError(t, err)
- var cond Condition
- has, err := testEngine.Where(builder.Eq{"col_name": "col1"}).Get(&cond)
- assert.NoError(t, err)
- assert.Equal(t, true, has, "records should exist")
- has, err = testEngine.Where(builder.Eq{"col_name": "col1"}.
- And(builder.Eq{"op": OpEqual})).
- NoAutoCondition().
- Get(&cond)
- assert.NoError(t, err)
- assert.Equal(t, true, has, "records should exist")
- has, err = testEngine.Where(builder.Eq{"col_name": "col1", "op": OpEqual, "value": "1"}).
- NoAutoCondition().
- Get(&cond)
- assert.NoError(t, err)
- assert.Equal(t, true, has, "records should exist")
- has, err = testEngine.Where(builder.Eq{"col_name": "col1"}.
- And(builder.Neq{"op": OpEqual})).
- NoAutoCondition().
- Get(&cond)
- assert.NoError(t, err)
- assert.Equal(t, false, has, "records should not exist")
- var conds []Condition
- err = testEngine.Where(builder.Eq{"col_name": "col1"}.
- And(builder.Eq{"op": OpEqual})).
- Find(&conds)
- assert.NoError(t, err)
- assert.EqualValues(t, 1, len(conds), "records should exist")
- conds = make([]Condition, 0)
- err = testEngine.Where(builder.Like{"col_name", "col"}).Find(&conds)
- assert.NoError(t, err)
- assert.EqualValues(t, 1, len(conds), "records should exist")
- conds = make([]Condition, 0)
- err = testEngine.Where(builder.Expr("col_name = ?", "col1")).Find(&conds)
- assert.NoError(t, err)
- assert.EqualValues(t, 1, len(conds), "records should exist")
- conds = make([]Condition, 0)
- err = testEngine.Where(builder.In("col_name", "col1", "col2")).Find(&conds)
- assert.NoError(t, err)
- assert.EqualValues(t, 1, len(conds), "records should exist")
- // complex condtions
- var where = builder.NewCond()
- if true {
- where = where.And(builder.Eq{"col_name": "col1"})
- where = where.Or(builder.And(builder.In("col_name", "col1", "col2"), builder.Expr("col_name = ?", "col1")))
- }
- conds = make([]Condition, 0)
- err = testEngine.Where(where).Find(&conds)
- assert.NoError(t, err)
- assert.EqualValues(t, 1, len(conds), "records should exist")
- }
|