xormplus 8 yıl önce
ebeveyn
işleme
481f04d592
5 değiştirilmiş dosya ile 304 ekleme ve 0 silme
  1. 16 0
      session_cols_test.go
  2. 95 0
      session_cond_test.go
  3. 59 0
      session_find_test.go
  4. 91 0
      session_get_test.go
  5. 43 0
      session_raw_test.go

+ 16 - 0
session_cols_test.go

@@ -0,0 +1,16 @@
+// 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"
+
+func TestSetExpr(t *testing.T) {
+	type User struct {
+		Id   int64
+		Show bool
+	}
+
+	testEngine.SetExpr("show", "NOT show").Id(1).Update(new(User))
+}

+ 95 - 0
session_cond_test.go

@@ -0,0 +1,95 @@
+// 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")
+}

+ 59 - 0
session_find_test.go

@@ -0,0 +1,59 @@
+// 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/stretchr/testify/assert"
+)
+
+func TestJoinLimit(t *testing.T) {
+	assert.NoError(t, prepareEngine())
+
+	type Salary struct {
+		Id  int64
+		Lid int64
+	}
+
+	type CheckList struct {
+		Id  int64
+		Eid int64
+	}
+
+	type Empsetting struct {
+		Id   int64
+		Name string
+	}
+
+	assert.NoError(t, testEngine.Sync2(new(Salary), new(CheckList), new(Empsetting)))
+
+	var emp Empsetting
+	cnt, err := testEngine.Insert(&emp)
+	assert.NoError(t, err)
+	assert.EqualValues(t, 1, cnt)
+
+	var checklist = CheckList{
+		Eid: emp.Id,
+	}
+	cnt, err = testEngine.Insert(&checklist)
+	assert.NoError(t, err)
+	assert.EqualValues(t, 1, cnt)
+
+	var salary = Salary{
+		Lid: checklist.Id,
+	}
+	cnt, err = testEngine.Insert(&salary)
+	assert.NoError(t, err)
+	assert.EqualValues(t, 1, cnt)
+
+	var salaries []Salary
+	err = testEngine.Table("salary").
+		Join("INNER", "check_list", "check_list.id = salary.lid").
+		Join("LEFT", "empsetting", "empsetting.id = check_list.eid").
+		Limit(10, 0).
+		Find(&salaries)
+	assert.NoError(t, err)
+}

+ 91 - 0
session_get_test.go

@@ -0,0 +1,91 @@
+// 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 (
+	"fmt"
+	"testing"
+	"time"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestGetVar(t *testing.T) {
+	assert.NoError(t, prepareEngine())
+
+	type GetVar struct {
+		Id      int64  `xorm:"autoincr pk"`
+		Msg     string `xorm:"varchar(255)"`
+		Age     int
+		Money   float32
+		Created time.Time `xorm:"created"`
+	}
+
+	assert.NoError(t, testEngine.Sync2(new(GetVar)))
+
+	var data = GetVar{
+		Msg:   "hi",
+		Age:   28,
+		Money: 1.5,
+	}
+	_, err := testEngine.InsertOne(data)
+	assert.NoError(t, err)
+
+	var msg string
+	has, err := testEngine.Table("get_var").Cols("msg").Get(&msg)
+	assert.NoError(t, err)
+	assert.Equal(t, true, has)
+	assert.Equal(t, "hi", msg)
+
+	var age int
+	has, err = testEngine.Table("get_var").Cols("age").Get(&age)
+	assert.NoError(t, err)
+	assert.Equal(t, true, has)
+	assert.Equal(t, 28, age)
+
+	var money float64
+	has, err = testEngine.Table("get_var").Cols("money").Get(&money)
+	assert.NoError(t, err)
+	assert.Equal(t, true, has)
+	assert.Equal(t, "1.5", fmt.Sprintf("%.1f", money))
+
+	var valuesString = make(map[string]string)
+	has, err = testEngine.Table("get_var").Get(&valuesString)
+	assert.NoError(t, err)
+	assert.Equal(t, true, has)
+	assert.Equal(t, 5, len(valuesString))
+	assert.Equal(t, "1", valuesString["id"])
+	assert.Equal(t, "hi", valuesString["msg"])
+	assert.Equal(t, "28", valuesString["age"])
+	assert.Equal(t, "1.5", valuesString["money"])
+
+	var valuesInter = make(map[string]interface{})
+	has, err = testEngine.Table("get_var").Where("id = ?", 1).Select("*").Get(&valuesInter)
+	assert.NoError(t, err)
+	assert.Equal(t, true, has)
+	assert.Equal(t, 5, len(valuesInter))
+	assert.EqualValues(t, 1, valuesInter["id"])
+	assert.Equal(t, "hi", fmt.Sprintf("%s", valuesInter["msg"]))
+	assert.EqualValues(t, 28, valuesInter["age"])
+	assert.Equal(t, "1.5", fmt.Sprintf("%v", valuesInter["money"]))
+
+	var valuesSliceString = make([]string, 5)
+	has, err = testEngine.Table("get_var").Get(&valuesSliceString)
+	assert.NoError(t, err)
+	assert.Equal(t, true, has)
+	assert.Equal(t, "1", valuesSliceString[0])
+	assert.Equal(t, "hi", valuesSliceString[1])
+	assert.Equal(t, "28", valuesSliceString[2])
+	assert.Equal(t, "1.5", valuesSliceString[3])
+
+	var valuesSliceInter = make([]interface{}, 5)
+	has, err = testEngine.Table("get_var").Get(&valuesSliceInter)
+	assert.NoError(t, err)
+	assert.Equal(t, true, has)
+	assert.EqualValues(t, 1, valuesSliceInter[0])
+	assert.Equal(t, "hi", fmt.Sprintf("%s", valuesSliceInter[1]))
+	assert.EqualValues(t, 28, valuesSliceInter[2])
+	assert.Equal(t, "1.5", fmt.Sprintf("%v", valuesSliceInter[3]))
+}

+ 43 - 0
session_raw_test.go

@@ -0,0 +1,43 @@
+// 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"
+	"time"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestQueryString(t *testing.T) {
+	assert.NoError(t, prepareEngine())
+
+	type GetVar struct {
+		Id      int64  `xorm:"autoincr pk"`
+		Msg     string `xorm:"varchar(255)"`
+		Age     int
+		Money   float32
+		Created time.Time `xorm:"created"`
+	}
+
+	assert.NoError(t, testEngine.Sync2(new(GetVar)))
+
+	var data = GetVar{
+		Msg:   "hi",
+		Age:   28,
+		Money: 1.5,
+	}
+	_, err := testEngine.InsertOne(data)
+	assert.NoError(t, err)
+
+	records, err := testEngine.QueryString("select * from get_var")
+	assert.NoError(t, err)
+	assert.Equal(t, 1, len(records))
+	assert.Equal(t, 5, len(records[0]))
+	assert.Equal(t, "1", records[0]["id"])
+	assert.Equal(t, "hi", records[0]["msg"])
+	assert.Equal(t, "28", records[0]["age"])
+	assert.Equal(t, "1.5", records[0]["money"])
+}