Files
kontor/go/pkg/library/book_test.go
2025-04-29 12:52:55 +02:00

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()
}
}