package apitest import ( "encoding/json" "fmt" "net/http" "net/http/httptest" "net/url" "testing" "git.artlef.fr/bibliomane/internal/dto" "git.artlef.fr/bibliomane/internal/testutils" "github.com/stretchr/testify/assert" ) func TestFetchAllBooks(t *testing.T) { result := testFetchBooks(t, "15", "0") assert.Equal(t, int64(31), result.Count) assert.Equal(t, 15, len(result.Books)) } func testFetchBooks(t *testing.T, limit string, offset string) dto.BookItemsGet { router := testutils.TestSetup() u, err := url.Parse("/ws/books") if err != nil { t.Error(err) } if limit != "" { q := u.Query() q.Set("limit", limit) u.RawQuery = q.Encode() } if offset != "" { q := u.Query() q.Set("offset", offset) u.RawQuery = q.Encode() } q := u.Query() q.Set("lang", "fr") u.RawQuery = q.Encode() token := testutils.ConnectDemoUser(router) req, _ := http.NewRequest("GET", u.String(), nil) req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", token)) w := httptest.NewRecorder() router.ServeHTTP(w, req) var result dto.BookItemsGet s := w.Body.String() err = json.Unmarshal([]byte(s), &result) if err != nil { t.Error(err) } assert.Equal(t, 200, w.Code) return result }