add db tests

This commit is contained in:
sentriz
2019-07-08 13:00:02 +01:00
parent fd940cfc9c
commit 34321ebfff
2 changed files with 74 additions and 24 deletions

View File

@@ -28,6 +28,34 @@ type DB struct {
*gorm.DB
}
func New(path string) (*DB, error) {
pathAndArgs := fmt.Sprintf("%s?%s", path, dbOptions.Encode())
db, err := gorm.Open("sqlite3", pathAndArgs)
if err != nil {
return nil, errors.Wrap(err, "with gorm")
}
db.SetLogger(log.New(os.Stdout, "gorm ", 0))
db.DB().SetMaxOpenConns(dbMaxOpenConns)
db.AutoMigrate(
model.Artist{},
model.Track{},
model.User{},
model.Setting{},
model.Play{},
model.Album{},
)
db.FirstOrCreate(&model.User{}, model.User{
Name: "admin",
Password: "admin",
IsAdmin: true,
})
return &DB{DB: db}, nil
}
func NewMock() (*DB, error) {
return New(":memory:")
}
func (db *DB) GetSetting(key string) string {
setting := &model.Setting{}
db.
@@ -60,27 +88,3 @@ func (db *DB) WithTx(cb func(tx *gorm.DB)) {
defer tx.Commit()
cb(tx)
}
func New(path string) (*DB, error) {
pathAndArgs := fmt.Sprintf("%s?%s", path, dbOptions.Encode())
db, err := gorm.Open("sqlite3", pathAndArgs)
if err != nil {
return nil, errors.Wrap(err, "with gorm")
}
db.SetLogger(log.New(os.Stdout, "gorm ", 0))
db.DB().SetMaxOpenConns(dbMaxOpenConns)
db.AutoMigrate(
model.Artist{},
model.Track{},
model.User{},
model.Setting{},
model.Play{},
model.Album{},
)
db.FirstOrCreate(&model.User{}, model.User{
Name: "admin",
Password: "admin",
IsAdmin: true,
})
return &DB{DB: db}, nil
}

46
db/db_test.go Normal file
View File

@@ -0,0 +1,46 @@
package db
import (
"log"
"math/rand"
"testing"
_ "github.com/jinzhu/gorm/dialects/sqlite"
)
var testDB *DB
func init() {
var err error
testDB, err = NewMock()
if err != nil {
log.Fatalf("error opening database: %v\n", err)
}
}
func randKey() string {
letters := []rune("abcdef0123456789")
b := make([]rune, 16)
for i := range b {
b[i] = letters[rand.Intn(len(letters))]
}
return string(b)
}
func TestGetSetting(t *testing.T) {
key := randKey()
// new key
expected := "hello"
testDB.SetSetting(key, expected)
actual := testDB.GetSetting(key)
if actual != expected {
t.Errorf("expected %q, got %q", expected, actual)
}
// existing key
expected = "howdy"
testDB.SetSetting(key, expected)
actual = testDB.GetSetting(key)
if actual != expected {
t.Errorf("expected %q, got %q", expected, actual)
}
}