add some tests for tag and cache related with #330

This commit is contained in:
Lunny Xiao 2017-05-27 13:50:57 +08:00
parent 6278427ee6
commit 5b65f21ae4
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
6 changed files with 153 additions and 1 deletions

108
cache_test.go Normal file
View File

@ -0,0 +1,108 @@
// 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 TestCacheFind(t *testing.T) {
assert.NoError(t, prepareEngine())
type MailBox struct {
Id int64
Username string
Password string
}
cacher := NewLRUCacher2(NewMemoryStore(), time.Hour, 10000)
testEngine.SetDefaultCacher(cacher)
assert.NoError(t, testEngine.Sync2(new(MailBox)))
var inserts = []*MailBox{
{
Username: "user1",
Password: "pass1",
},
{
Username: "user2",
Password: "pass2",
},
}
_, err := testEngine.Insert(inserts[0], inserts[1])
assert.NoError(t, err)
var boxes []MailBox
assert.NoError(t, testEngine.Find(&boxes))
assert.EqualValues(t, 2, len(boxes))
for i, box := range boxes {
assert.Equal(t, inserts[i].Id, box.Id)
assert.Equal(t, inserts[i].Username, box.Username)
assert.Equal(t, inserts[i].Password, box.Password)
}
boxes = make([]MailBox, 0, 2)
assert.NoError(t, testEngine.Find(&boxes))
assert.EqualValues(t, 2, len(boxes))
for i, box := range boxes {
assert.Equal(t, inserts[i].Id, box.Id)
assert.Equal(t, inserts[i].Username, box.Username)
assert.Equal(t, inserts[i].Password, box.Password)
}
testEngine.SetDefaultCacher(nil)
}
func TestCacheFind2(t *testing.T) {
assert.NoError(t, prepareEngine())
type MailBox struct {
Id uint64
Username string
Password string
}
cacher := NewLRUCacher2(NewMemoryStore(), time.Hour, 10000)
testEngine.SetDefaultCacher(cacher)
assert.NoError(t, testEngine.Sync2(new(MailBox)))
var inserts = []*MailBox{
{
Username: "user1",
Password: "pass1",
},
{
Username: "user2",
Password: "pass2",
},
}
_, err := testEngine.Insert(inserts[0], inserts[1])
assert.NoError(t, err)
var boxes []MailBox
assert.NoError(t, testEngine.Find(&boxes))
assert.EqualValues(t, 2, len(boxes))
for i, box := range boxes {
assert.Equal(t, inserts[i].Id, box.Id)
assert.Equal(t, inserts[i].Username, box.Username)
assert.Equal(t, inserts[i].Password, box.Password)
}
boxes = make([]MailBox, 0, 2)
assert.NoError(t, testEngine.Find(&boxes))
assert.EqualValues(t, 2, len(boxes))
for i, box := range boxes {
assert.Equal(t, inserts[i].Id, box.Id)
assert.Equal(t, inserts[i].Username, box.Username)
assert.Equal(t, inserts[i].Password, box.Password)
}
testEngine.SetDefaultCacher(nil)
}

View File

@ -122,7 +122,10 @@ func (session *Session) Find(rowsSlicePtr interface{}, condiBean ...interface{})
}
}
condSQL, condArgs, _ := builder.ToSQL(session.Statement.cond.And(autoCond))
condSQL, condArgs, err := builder.ToSQL(session.Statement.cond.And(autoCond))
if err != nil {
return err
}
args = append(session.Statement.joinArgs, condArgs...)
sqlStr = session.Statement.genSelectSQL(columnStr, condSQL)

39
tag_test.go Normal file
View File

@ -0,0 +1,39 @@
// 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 TestCacheTag(t *testing.T) {
assert.NoError(t, prepareEngine())
type CacheDomain struct {
Id int64 `xorm:"pk cache"`
Name string
}
assert.NoError(t, testEngine.CreateTables(&CacheDomain{}))
table := testEngine.TableInfo(&CacheDomain{})
assert.True(t, table.Cacher != nil)
}
func TestNoCacheTag(t *testing.T) {
assert.NoError(t, prepareEngine())
type NoCacheDomain struct {
Id int64 `xorm:"pk nocache"`
Name string
}
assert.NoError(t, testEngine.CreateTables(&NoCacheDomain{}))
table := testEngine.TableInfo(&NoCacheDomain{})
assert.True(t, table.Cacher == nil)
}

View File

@ -7,6 +7,7 @@ import (
"testing"
_ "github.com/go-sql-driver/mysql"
"github.com/go-xorm/core"
_ "github.com/lib/pq"
_ "github.com/mattn/go-sqlite3"
)
@ -31,6 +32,7 @@ func createEngine(dbType, connStr string) error {
}
testEngine.ShowSQL(*showSQL)
testEngine.logger.SetLevel(core.LOG_DEBUG)
}
tables, err := testEngine.DBMetas()