[TASK] add test to database lib
This commit is contained in:
parent
19be8eb253
commit
07eb1e384b
|
@ -22,11 +22,17 @@ type Config struct {
|
|||
func Open(c Config) (err error) {
|
||||
config = &c
|
||||
Write, err = gorm.Open(config.Type, config.Connection)
|
||||
Write.SingularTable(true)
|
||||
Write.Callback().Create().Remove("gorm:update_time_stamp")
|
||||
Write.Callback().Update().Remove("gorm:update_time_stamp")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if len(config.ReadConnection) > 0 {
|
||||
Read, err = gorm.Open(config.Type, config.ReadConnection)
|
||||
Read.SingularTable(true)
|
||||
Read.Callback().Create().Remove("gorm:update_time_stamp")
|
||||
Read.Callback().Update().Remove("gorm:update_time_stamp")
|
||||
} else {
|
||||
Read = Write
|
||||
}
|
||||
|
@ -36,9 +42,12 @@ func Open(c Config) (err error) {
|
|||
|
||||
func Close() {
|
||||
Write.Close()
|
||||
Write = nil
|
||||
|
||||
if len(config.ReadConnection) > 0 {
|
||||
Read.Close()
|
||||
}
|
||||
Read = nil
|
||||
}
|
||||
|
||||
func AddModel(m interface{}) {
|
||||
|
|
|
@ -1 +1,73 @@
|
|||
package database
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
type TestModel struct {
|
||||
ID int64
|
||||
Value string `gorm:"type:varchar(255);column:value" json:"value"`
|
||||
}
|
||||
|
||||
func TestOpenNoDB(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
c := Config{}
|
||||
|
||||
err := Open(c)
|
||||
assert.Error(err, "error")
|
||||
}
|
||||
func TestOpenOneDB(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
AddModel(&TestModel{})
|
||||
|
||||
c := Config{
|
||||
Type: "sqlite3",
|
||||
Connection: "file:database?mode=memory",
|
||||
}
|
||||
var count int64
|
||||
|
||||
err := Open(c)
|
||||
assert.NoError(err, "no error")
|
||||
Write.LogMode(true)
|
||||
Read.LogMode(true)
|
||||
|
||||
Write.Create(&TestModel{Value: "first"})
|
||||
Write.Create(&TestModel{Value: "secound"})
|
||||
|
||||
var list []*TestModel
|
||||
Read.Find(&list).Count(&count)
|
||||
assert.Equal(int64(2), count, "not enought entries")
|
||||
Close()
|
||||
}
|
||||
|
||||
func TestOpenTwoDB(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
AddModel(&TestModel{})
|
||||
|
||||
c := Config{
|
||||
Type: "sqlite3",
|
||||
Connection: "file:database?mode=memory",
|
||||
ReadConnection: "file:database2?mode=memory",
|
||||
}
|
||||
var count int64
|
||||
|
||||
err := Open(c)
|
||||
assert.NoError(err, "no error")
|
||||
Write.LogMode(true)
|
||||
Read.LogMode(true)
|
||||
|
||||
Write.Create(&TestModel{Value: "first"})
|
||||
Write.Create(&TestModel{Value: "secound"})
|
||||
|
||||
var list []*TestModel
|
||||
Write.Find(&list).Count(&count)
|
||||
assert.Equal(int64(2), count, "not enought entries")
|
||||
|
||||
result := Read.Find(&list)
|
||||
assert.Error(result.Error, "error, because it is the wrong database")
|
||||
Close()
|
||||
|
||||
}
|
||||
|
|
Reference in New Issue