add some tests for tag and cache related with #330
This commit is contained in:
parent
6278427ee6
commit
5b65f21ae4
|
@ -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)
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
}
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue