This repository has been archived on 2025-03-01. You can view files and clone it, but cannot push or open issues or pull requests.
trantor/lib/database/list_test.go

124 lines
2.9 KiB
Go
Raw Permalink Normal View History

2018-04-09 00:15:58 +00:00
package database
import "testing"
const (
listID = "1234567890"
title = "My title"
username = "username"
)
func TestNewBookList(t *testing.T) {
db, dbclose := testDbInit(t)
defer dbclose()
testCreateList(t, db)
list, err := db.GetBookList(listID)
if err != nil {
t.Fatal("db.GetBookList() return an error: ", err)
}
if list.ListID != listID {
t.Fatal("list id doesn't match: ", list.ListID, " <=> ", listID)
}
if list.Title != title {
t.Fatal("title doesn't match: ", list.Title, " <=> ", title)
}
}
func TestBookListAddDelBooks(t *testing.T) {
db, dbclose := testDbInit(t)
defer dbclose()
testCreateList(t, db)
testAddBook(t, db)
err := db.AddBookToList(listID, book.ID)
if err != nil {
t.Fatal("db.AddBookToList() return an error: ", err)
}
list, err := db.GetBookList(listID)
if err != nil {
t.Fatal("db.GetBookList() return an error: ", err)
}
if len(list.Books) != 1 {
t.Fatal("We got a un expected number of books: ", list.Books)
}
if list.Books[0].ID != book.ID {
t.Fatal("book id doesn't match: ", list.Books[0].ID, " <=> ", book.ID)
}
lists, err := db.GetListsByBook(book.ID)
if err != nil {
t.Fatal("db.GetListsByBook() return an error: ", err)
}
if len(lists) != 1 {
t.Fatal("We got a un expected number of lists: ", lists)
}
if lists[0].Books[0].Title != book.Title {
t.Fatal("book id doesn't match: ", lists[0].Books[0].Title, " <=> ", book.Title)
}
err = db.DeleteBookFromList(listID, book.ID)
if err != nil {
t.Fatal("db.DeleteBookFromList() return an error: ", err)
}
list, err = db.GetBookList(listID)
if err != nil {
t.Fatal("db.GetBookList() return an error: ", err)
}
if len(list.Books) != 0 {
t.Fatal("We got a un expected number of books: ", list.Books)
}
}
func TestBookListByUser(t *testing.T) {
db, dbclose := testDbInit(t)
defer dbclose()
testCreateList(t, db)
lists, err := db.GetListsByUser(username)
if err != nil {
t.Fatal("db.GetBookListsByUser() return an error: ", err)
}
if len(lists) != 1 {
t.Fatal("We got a un expected number of lists: ", lists)
}
if lists[0].ListID != listID {
t.Fatal("list id doesn't match: ", lists[0].ListID, " <=> ", listID)
}
}
func TestBookListUpdate(t *testing.T) {
const otherTitle = "other title"
db, dbclose := testDbInit(t)
defer dbclose()
testCreateList(t, db)
err := db.UpdateBookList(listID, otherTitle, []string{})
if err != nil {
t.Fatal("db.UpdateBookList() return an error: ", err)
}
list, err := db.GetBookList(listID)
if err != nil {
t.Fatal("db.GetBookList() return an error: ", err)
}
if list.Title != otherTitle {
t.Fatal("title doesn't match: ", list.Title, " <=> ", otherTitle)
}
}
func testCreateList(t *testing.T, db DB) {
err := db.AddUser(username, "pass")
if err != nil {
t.Fatal("db.AddUser() return an error: ", err)
}
err = db.NewBookList(listID, title, username, []string{})
if err != nil {
t.Fatal("db.NewBookList() return an error: ", err)
}
}