mirror of
https://github.com/geektutu/7days-golang.git
synced 2024-04-21 12:32:11 +00:00
98 lines
2.0 KiB
Go
98 lines
2.0 KiB
Go
package session
|
|
|
|
import "testing"
|
|
|
|
var (
|
|
user1 = &User{"Tom", 18}
|
|
user2 = &User{"Sam", 25}
|
|
user3 = &User{"Jack", 25}
|
|
)
|
|
|
|
func testRecordInit(t *testing.T) *Session {
|
|
t.Helper()
|
|
s := NewSession().Model(&User{})
|
|
err1 := s.DropTable()
|
|
err2 := s.CreateTable()
|
|
_, err3 := s.Insert(user1, user2)
|
|
if err1 != nil || err2 != nil || err3 != nil {
|
|
t.Fatal("failed init test records")
|
|
}
|
|
return s
|
|
}
|
|
|
|
func TestSession_Insert(t *testing.T) {
|
|
s := testRecordInit(t)
|
|
affected, err := s.Insert(user3)
|
|
if err != nil || affected != 1 {
|
|
t.Fatal("failed to create record")
|
|
}
|
|
}
|
|
|
|
func TestSession_Find(t *testing.T) {
|
|
s := testRecordInit(t)
|
|
var users []User
|
|
if err := s.Find(&users); err != nil || len(users) != 2 {
|
|
t.Fatal("failed to query all")
|
|
}
|
|
}
|
|
|
|
func TestSession_First(t *testing.T) {
|
|
s := testRecordInit(t)
|
|
u := &User{}
|
|
err := s.First(u)
|
|
if err != nil || u.Name != "Tom" || u.Age != 18 {
|
|
t.Fatal("failed to query first")
|
|
}
|
|
}
|
|
|
|
func TestSession_Limit(t *testing.T) {
|
|
s := testRecordInit(t)
|
|
var users []User
|
|
err := s.Limit(1).Find(&users)
|
|
if err != nil || len(users) != 1 {
|
|
t.Fatal("failed to query with limit condition")
|
|
}
|
|
}
|
|
|
|
func TestSession_Where(t *testing.T) {
|
|
s := testRecordInit(t)
|
|
var users []User
|
|
_, err1 := s.Insert(user3)
|
|
err2 := s.Where("Age = ?", 25).Find(&users)
|
|
|
|
if err1 != nil || err2 != nil || len(users) != 2 {
|
|
t.Fatal("failed to query with where condition")
|
|
}
|
|
}
|
|
|
|
func TestSession_OrderBy(t *testing.T) {
|
|
s := testRecordInit(t)
|
|
u := &User{}
|
|
err := s.OrderBy("Age DESC").First(u)
|
|
|
|
if err != nil || u.Age != 25 {
|
|
t.Fatal("failed to query with order by condition")
|
|
}
|
|
}
|
|
|
|
func TestSession_Update(t *testing.T) {
|
|
s := testRecordInit(t)
|
|
affected, _ := s.Where("Name = ?", "Tom").Update("Age", 30)
|
|
u := &User{}
|
|
_ = s.OrderBy("Age DESC").First(u)
|
|
|
|
if affected != 1 || u.Age != 30 {
|
|
t.Fatal("failed to update")
|
|
}
|
|
}
|
|
|
|
func TestSession_DeleteAndCount(t *testing.T) {
|
|
s := testRecordInit(t)
|
|
affected, _ := s.Where("Name = ?", "Tom").Delete()
|
|
count, _ := s.Count()
|
|
|
|
if affected != 1 || count != 1 {
|
|
t.Fatal("failed to delete or count")
|
|
}
|
|
}
|