Add tests package
This commit is contained in:
parent
7065ea8c97
commit
7ee0af3283
@ -4,10 +4,10 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/jinzhu/gorm"
|
||||
"github.com/jinzhu/gorm/tests"
|
||||
)
|
||||
|
||||
var DB *gorm.DB
|
||||
@ -20,29 +20,6 @@ func init() {
|
||||
}
|
||||
}
|
||||
|
||||
func TestBatchInsert(t *testing.T) {
|
||||
type User struct {
|
||||
gorm.Model
|
||||
Name string
|
||||
Age int
|
||||
}
|
||||
|
||||
users := []*User{{Name: "name1", Age: 10}, {Name: "name2", Age: 20}, {Name: "name3", Age: 30}}
|
||||
|
||||
DB.Create(users)
|
||||
|
||||
for _, user := range users {
|
||||
if user.ID == 0 {
|
||||
t.Errorf("User should have primary key")
|
||||
}
|
||||
|
||||
var newUser User
|
||||
if err := DB.Find(&newUser, "id = ?", user.ID).Error; err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(&newUser, user) {
|
||||
t.Errorf("User should be equal, but got %#v, should be %#v", newUser, user)
|
||||
}
|
||||
}
|
||||
func TestAll(t *testing.T) {
|
||||
tests.RunCreateSuit(DB, t)
|
||||
}
|
||||
|
62
tests/create.go
Normal file
62
tests/create.go
Normal file
@ -0,0 +1,62 @@
|
||||
package tests
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/jinzhu/gorm"
|
||||
)
|
||||
|
||||
// RunCreateSuit run create suit
|
||||
func RunCreateSuit(db *gorm.DB, t *testing.T) {
|
||||
testInsert(db, t, FormatWithMsg("Insert"))
|
||||
testBatchInsert(db, t, FormatWithMsg("BatchInsert"))
|
||||
}
|
||||
|
||||
func testInsert(db *gorm.DB, t *testing.T, format Format) {
|
||||
type User struct {
|
||||
gorm.Model
|
||||
Name string
|
||||
Age int
|
||||
}
|
||||
|
||||
user := User{Name: "name1", Age: 10}
|
||||
|
||||
db.Create(&user)
|
||||
|
||||
var newUser User
|
||||
if err := db.Find(&newUser, "id = ?", user.ID).Error; err != nil {
|
||||
t.Error(format(err))
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(newUser, user) {
|
||||
t.Error(format("User should be equal, but got %#v, should be %#v", newUser, user))
|
||||
}
|
||||
}
|
||||
|
||||
func testBatchInsert(db *gorm.DB, t *testing.T, format Format) {
|
||||
type User struct {
|
||||
gorm.Model
|
||||
Name string
|
||||
Age int
|
||||
}
|
||||
|
||||
users := []*User{{Name: "name1", Age: 10}, {Name: "name2", Age: 20}, {Name: "name3", Age: 30}}
|
||||
|
||||
db.Create(users)
|
||||
|
||||
for _, user := range users {
|
||||
if user.ID == 0 {
|
||||
t.Error(format("User should have primary key"))
|
||||
}
|
||||
|
||||
var newUser User
|
||||
if err := db.Find(&newUser, "id = ?", user.ID).Error; err != nil {
|
||||
t.Error(format(err))
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(&newUser, user) {
|
||||
t.Errorf(format("User should be equal, but got %#v, should be %#v", newUser, user))
|
||||
}
|
||||
}
|
||||
}
|
13
tests/utils.go
Normal file
13
tests/utils.go
Normal file
@ -0,0 +1,13 @@
|
||||
package tests
|
||||
|
||||
import "fmt"
|
||||
|
||||
// Format format test message
|
||||
type Format func(value interface{}, args ...interface{}) string
|
||||
|
||||
// FormatWithMsg format test messages
|
||||
func FormatWithMsg(msg string) Format {
|
||||
return func(value interface{}, args ...interface{}) string {
|
||||
return fmt.Sprintf("[%v] %v", msg, fmt.Sprintf(fmt.Sprint(value), args...))
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user