diff --git a/session_schema_test.go b/session_schema_test.go index 4d8a4d5a..8a7016c9 100644 --- a/session_schema_test.go +++ b/session_schema_test.go @@ -200,3 +200,19 @@ func TestMetaInfo(t *testing.T) { assert.EqualValues(t, "customtablename", tables[0].Name) assert.EqualValues(t, "index_or_unique", tables[1].Name) } + +func TestCharst(t *testing.T) { + assert.NoError(t, prepareEngine()) + + err := testEngine.DropTables("user_charset") + if err != nil { + t.Error(err) + panic(err) + } + + err = testEngine.Charset("utf8").Table("user_charset").CreateTable(&Userinfo{}) + if err != nil { + t.Error(err) + panic(err) + } +} diff --git a/tag_test.go b/tag_test.go new file mode 100644 index 00000000..4201b1c5 --- /dev/null +++ b/tag_test.go @@ -0,0 +1,189 @@ +// 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 ( + "errors" + "fmt" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +type UserCU struct { + Id int64 + Name string + Created time.Time `xorm:"created"` + Updated time.Time `xorm:"updated"` +} + +func TestCreatedAndUpdated(t *testing.T) { + assert.NoError(t, prepareEngine()) + + u := new(UserCU) + err := testEngine.DropTables(u) + if err != nil { + t.Error(err) + panic(err) + } + + err = testEngine.CreateTables(u) + if err != nil { + t.Error(err) + panic(err) + } + + u.Name = "sss" + cnt, err := testEngine.Insert(u) + if err != nil { + t.Error(err) + panic(err) + } + if cnt != 1 { + err = errors.New("insert not returned 1") + t.Error(err) + panic(err) + return + } + + u.Name = "xxx" + cnt, err = testEngine.Id(u.Id).Update(u) + if err != nil { + t.Error(err) + panic(err) + } + if cnt != 1 { + err = errors.New("update not returned 1") + t.Error(err) + panic(err) + return + } + + u.Id = 0 + u.Created = time.Now().Add(-time.Hour * 24 * 365) + u.Updated = u.Created + fmt.Println(u) + cnt, err = testEngine.NoAutoTime().Insert(u) + if err != nil { + t.Error(err) + panic(err) + } + if cnt != 1 { + err = errors.New("insert not returned 1") + t.Error(err) + panic(err) + return + } +} + +type StrangeName struct { + Id_t int64 `xorm:"pk autoincr"` + Name string +} + +func TestStrangeName(t *testing.T) { + assert.NoError(t, prepareEngine()) + + err := testEngine.DropTables(new(StrangeName)) + if err != nil { + t.Error(err) + } + + err = testEngine.CreateTables(new(StrangeName)) + if err != nil { + t.Error(err) + } + + _, err = testEngine.Insert(&StrangeName{Name: "sfsfdsfds"}) + if err != nil { + t.Error(err) + } + + beans := make([]StrangeName, 0) + err = testEngine.Find(&beans) + if err != nil { + t.Error(err) + } +} + +type CreatedUpdated struct { + Id int64 + Name string + Value float64 `xorm:"numeric"` + Created time.Time `xorm:"created"` + Created2 time.Time `xorm:"created"` + Updated time.Time `xorm:"updated"` +} + +func TestCreatedUpdated(t *testing.T) { + assert.NoError(t, prepareEngine()) + + err := testEngine.Sync(&CreatedUpdated{}) + if err != nil { + t.Error(err) + panic(err) + } + + c := &CreatedUpdated{Name: "test"} + _, err = testEngine.Insert(c) + if err != nil { + t.Error(err) + panic(err) + } + + c2 := new(CreatedUpdated) + has, err := testEngine.Id(c.Id).Get(c2) + if err != nil { + t.Error(err) + panic(err) + } + + if !has { + panic(errors.New("no id")) + } + + c2.Value -= 1 + _, err = testEngine.Id(c2.Id).Update(c2) + if err != nil { + t.Error(err) + panic(err) + } +} + +type Lowercase struct { + Id int64 + Name string + ended int64 `xorm:"-"` +} + +func TestLowerCase(t *testing.T) { + assert.NoError(t, prepareEngine()) + + err := testEngine.Sync(&Lowercase{}) + _, err = testEngine.Where("(id) > 0").Delete(&Lowercase{}) + if err != nil { + t.Error(err) + panic(err) + } + _, err = testEngine.Insert(&Lowercase{ended: 1}) + if err != nil { + t.Error(err) + panic(err) + } + + ls := make([]Lowercase, 0) + err = testEngine.Find(&ls) + if err != nil { + t.Error(err) + panic(err) + } + + if len(ls) != 1 { + err = errors.New("should be 1") + t.Error(err) + panic(err) + } +}