diff --git a/dialects/sqlite/main_test.go b/dialects/sqlite/main_test.go index 7a87099b..816b20c2 100644 --- a/dialects/sqlite/main_test.go +++ b/dialects/sqlite/main_test.go @@ -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) } diff --git a/tests/create.go b/tests/create.go new file mode 100644 index 00000000..5ca549c4 --- /dev/null +++ b/tests/create.go @@ -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)) + } + } +} diff --git a/tests/utils.go b/tests/utils.go new file mode 100644 index 00000000..4b8bf500 --- /dev/null +++ b/tests/utils.go @@ -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...)) + } +}