|
@@ -8,6 +8,7 @@ import (
|
|
|
"errors"
|
|
"errors"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"testing"
|
|
"testing"
|
|
|
|
|
+ "time"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/assert"
|
|
|
"github.com/xormplus/core"
|
|
"github.com/xormplus/core"
|
|
@@ -655,5 +656,114 @@ func TestFindMapStringId(t *testing.T) {
|
|
|
cnt, err = testEngine.ID("1").Delete(new(FindMapDevice))
|
|
cnt, err = testEngine.ID("1").Delete(new(FindMapDevice))
|
|
|
assert.NoError(t, err)
|
|
assert.NoError(t, err)
|
|
|
assert.EqualValues(t, 1, cnt)
|
|
assert.EqualValues(t, 1, cnt)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func TestFindExtends(t *testing.T) {
|
|
|
|
|
+ type FindExtendsB struct {
|
|
|
|
|
+ ID int64
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ type FindExtendsA struct {
|
|
|
|
|
+ FindExtendsB `xorm:"extends"`
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ assert.NoError(t, prepareEngine())
|
|
|
|
|
+ assertSync(t, new(FindExtendsA))
|
|
|
|
|
+
|
|
|
|
|
+ cnt, err := testEngine.Insert(&FindExtendsA{
|
|
|
|
|
+ FindExtendsB: FindExtendsB{},
|
|
|
|
|
+ })
|
|
|
|
|
+ assert.NoError(t, err)
|
|
|
|
|
+ assert.EqualValues(t, 1, cnt)
|
|
|
|
|
+
|
|
|
|
|
+ cnt, err = testEngine.Insert(&FindExtendsA{
|
|
|
|
|
+ FindExtendsB: FindExtendsB{},
|
|
|
|
|
+ })
|
|
|
|
|
+ assert.NoError(t, err)
|
|
|
|
|
+ assert.EqualValues(t, 1, cnt)
|
|
|
|
|
|
|
|
|
|
+ var results []FindExtendsA
|
|
|
|
|
+ err = testEngine.Find(&results)
|
|
|
|
|
+ assert.NoError(t, err)
|
|
|
|
|
+ assert.EqualValues(t, 2, len(results))
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func TestFindExtends3(t *testing.T) {
|
|
|
|
|
+ type FindExtendsCC struct {
|
|
|
|
|
+ ID int64
|
|
|
|
|
+ Name string
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ type FindExtendsBB struct {
|
|
|
|
|
+ FindExtendsCC `xorm:"extends"`
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ type FindExtendsAA struct {
|
|
|
|
|
+ FindExtendsBB `xorm:"extends"`
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ assert.NoError(t, prepareEngine())
|
|
|
|
|
+ assertSync(t, new(FindExtendsAA))
|
|
|
|
|
+
|
|
|
|
|
+ cnt, err := testEngine.Insert(&FindExtendsAA{
|
|
|
|
|
+ FindExtendsBB: FindExtendsBB{
|
|
|
|
|
+ FindExtendsCC: FindExtendsCC{
|
|
|
|
|
+ Name: "cc1",
|
|
|
|
|
+ },
|
|
|
|
|
+ },
|
|
|
|
|
+ })
|
|
|
|
|
+ assert.NoError(t, err)
|
|
|
|
|
+ assert.EqualValues(t, 1, cnt)
|
|
|
|
|
+
|
|
|
|
|
+ cnt, err = testEngine.Insert(&FindExtendsAA{
|
|
|
|
|
+ FindExtendsBB: FindExtendsBB{
|
|
|
|
|
+ FindExtendsCC: FindExtendsCC{
|
|
|
|
|
+ Name: "cc2",
|
|
|
|
|
+ },
|
|
|
|
|
+ },
|
|
|
|
|
+ })
|
|
|
|
|
+ assert.NoError(t, err)
|
|
|
|
|
+ assert.EqualValues(t, 1, cnt)
|
|
|
|
|
+
|
|
|
|
|
+ var results []FindExtendsAA
|
|
|
|
|
+ err = testEngine.Find(&results)
|
|
|
|
|
+ assert.NoError(t, err)
|
|
|
|
|
+ assert.EqualValues(t, 2, len(results))
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func TestFindCacheLimit(t *testing.T) {
|
|
|
|
|
+ type InviteCode struct {
|
|
|
|
|
+ ID int64 `xorm:"pk autoincr 'id'"`
|
|
|
|
|
+ Code string `xorm:"unique"`
|
|
|
|
|
+ Created time.Time `xorm:"created"`
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ assert.NoError(t, prepareEngine())
|
|
|
|
|
+ assertSync(t, new(InviteCode))
|
|
|
|
|
+
|
|
|
|
|
+ cnt, err := testEngine.Insert(&InviteCode{
|
|
|
|
|
+ Code: "123456",
|
|
|
|
|
+ })
|
|
|
|
|
+ assert.NoError(t, err)
|
|
|
|
|
+ assert.EqualValues(t, 1, cnt)
|
|
|
|
|
+
|
|
|
|
|
+ cnt, err = testEngine.Insert(&InviteCode{
|
|
|
|
|
+ Code: "234567",
|
|
|
|
|
+ })
|
|
|
|
|
+ assert.NoError(t, err)
|
|
|
|
|
+ assert.EqualValues(t, 1, cnt)
|
|
|
|
|
+
|
|
|
|
|
+ for i := 0; i < 8; i++ {
|
|
|
|
|
+ var beans []InviteCode
|
|
|
|
|
+ err = testEngine.Limit(1, 0).Find(&beans)
|
|
|
|
|
+ assert.NoError(t, err)
|
|
|
|
|
+ assert.EqualValues(t, 1, len(beans))
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ for i := 0; i < 8; i++ {
|
|
|
|
|
+ var beans2 []*InviteCode
|
|
|
|
|
+ err = testEngine.Limit(1, 0).Find(&beans2)
|
|
|
|
|
+ assert.NoError(t, err)
|
|
|
|
|
+ assert.EqualValues(t, 1, len(beans2))
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|