Files
bibliomane/internal/apitest/get_book_test.go

81 lines
3.3 KiB
Go

package apitest
import (
"encoding/json"
"fmt"
"net/http"
"net/http/httptest"
"testing"
"git.artlef.fr/bibliomane/internal/dto"
"git.artlef.fr/bibliomane/internal/testutils"
"github.com/stretchr/testify/assert"
)
func TestGetBook_Ok(t *testing.T) {
book := testGetBook(t, "3", http.StatusOK)
assert.Equal(t,
dto.BookGet{
Title: "D'un château l'autre",
Author: "Louis-Ferdinand Céline",
AuthorID: 2,
Rating: 10,
Read: true,
CoverPath: "/static/bookcover/dunchateaulautre.jpg",
Review: "Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
}, book)
}
func TestGetBook_NoUserBook(t *testing.T) {
book := testGetBook(t, "18", http.StatusOK)
assert.Equal(t,
dto.BookGet{
Title: "De sang-froid",
Author: "Truman Capote",
AuthorID: 14,
Read: false,
CoverPath: "/static/bookcover/desangfroid.jpg",
}, book)
}
func TestGetBook_Description(t *testing.T) {
book := testGetBook(t, "22", http.StatusOK)
assert.Equal(t,
dto.BookGet{
Title: "Le complot contre l'Amérique",
Author: "Philip Roth",
AuthorID: 17,
ISBN: "9782070337903",
Summary: "Lorsque le célèbre aviateur Charles Lindbergh battit le président Roosevelt aux élections présidentielles de 1940, la peur s'empara des Juifs américains. Non seulement Lindbergh avait, dans son discours radiophonique à la nation, reproché aux Juifs de pousser l'Amérique à entreprendre une guerre inutile avec l'Allemagne nazie, mais, en devenant trente-troisième président des États-Unis, il s'empressa de signer un pacte de non-agression avec Hitler. Alors la terreur pénétra dans les foyers juifs, notamment dans celui de la famille Roth. Ce contexte sert de décor historique au Complot contre l'Amérique, un roman où Philip Roth, qui avait sept ans à l'époque, raconte ce que vécut et ressentit sa famille - et des millions de familles semblables dans tout le pays - lors des lourdes années où s'exerça la présidence de Lindbergh, quand les citoyens américains qui étaient aussi des Juifs avaient de bonnes raisons de craindre le pire. Ce faisant, il nous offre un nouveau chef-d'oeuvre.",
Rating: 6,
Read: true,
CoverPath: "/static/bookcover/lecomplotcontrelamerique.jpg",
}, book)
}
func TestGetBook_IdNotFound(t *testing.T) {
testGetBook(t, "46544", http.StatusNotFound)
}
func TestGetBook_IdNotInt(t *testing.T) {
testGetBook(t, "wrong", http.StatusBadRequest)
}
func testGetBook(t *testing.T, id string, status int) dto.BookGet {
router := testutils.TestSetup()
token := testutils.ConnectDemoUser(router)
req, _ := http.NewRequest("GET", "/ws/book/"+id, nil)
req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", token))
w := httptest.NewRecorder()
router.ServeHTTP(w, req)
var book dto.BookGet
err := json.Unmarshal(w.Body.Bytes(), &book)
if err != nil {
t.Error(err)
}
assert.Equal(t, status, w.Code)
return book
}