108 lines
1.7 KiB
Go
108 lines
1.7 KiB
Go
package library
|
|
|
|
import (
|
|
"gitlab.thpeetz.de/kontor/kontor-go/pkg/dao"
|
|
"reflect"
|
|
"testing"
|
|
|
|
"gopkg.in/mgo.v2/bson"
|
|
)
|
|
|
|
var bookModelTestTable = []struct {
|
|
name string
|
|
typeName string
|
|
}{
|
|
{"Id", "string"},
|
|
{"Title", "string"},
|
|
{"Author", "string"},
|
|
{"Publisher", "string"},
|
|
{"Isbn", "string"},
|
|
{"Year", "int"},
|
|
{"Edition", "string"},
|
|
{"Model", "string"},
|
|
}
|
|
|
|
func TestBookModel(t *testing.T) {
|
|
m := Book{}
|
|
if reflect.TypeOf(m).NumField() != len(bookModelTestTable) {
|
|
t.Fail()
|
|
}
|
|
for index, testData := range bookModelTestTable {
|
|
givenType := reflect.TypeOf(m).Field(index).Type.Kind().String()
|
|
if givenType != testData.typeName {
|
|
t.Fail()
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestListBooks(t *testing.T) {
|
|
var (
|
|
bookDao = BookDAO{Db: dao.TestDb}
|
|
)
|
|
books, err := bookDao.FindAll()
|
|
if err != nil {
|
|
t.Fail()
|
|
}
|
|
if len(books) != 0 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestInsertBook(t *testing.T) {
|
|
var (
|
|
bookDao = BookDAO{Db: dao.TestDb}
|
|
book = Book{}
|
|
books []Book
|
|
)
|
|
book.ID = bson.NewObjectId()
|
|
book.Title = "Packt Publishing"
|
|
err := bookDao.Insert(book)
|
|
if err != nil {
|
|
t.Fail()
|
|
}
|
|
books, err = bookDao.FindAll()
|
|
if err != nil {
|
|
t.Fail()
|
|
}
|
|
if len(books) != 1 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestUpsertBook(t *testing.T) {
|
|
var (
|
|
bookDao = BookDAO{Db: dao.TestDb}
|
|
book = Book{}
|
|
)
|
|
book.ID = bson.NewObjectId()
|
|
book.Title = "Hansa Verlag"
|
|
bookDao.Upsert(book)
|
|
books, err := bookDao.FindAll()
|
|
if err != nil {
|
|
t.Fail()
|
|
}
|
|
if len(books) != 2 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestDeleteBook(t *testing.T) {
|
|
var (
|
|
bookDao = BookDAO{Db: dao.TestDb}
|
|
)
|
|
books, err := bookDao.FindAll()
|
|
if err != nil {
|
|
t.Fail()
|
|
}
|
|
for _, book := range books {
|
|
bookDao.Delete(book)
|
|
}
|
|
books, err = bookDao.FindAll()
|
|
if err != nil {
|
|
t.Fail()
|
|
}
|
|
if len(books) != 0 {
|
|
t.Fail()
|
|
}
|
|
}
|