package apitest import ( "net/url" "testing" "git.artlef.fr/PersonalLibraryManager/internal/testutils" "github.com/gin-gonic/gin" "github.com/stretchr/testify/assert" ) func TestGetReadBooksHandler_Demo(t *testing.T) { router := testutils.TestSetup() token := testutils.ConnectDemoUser(router) books := testGetReadBooksHandler(t, router, token, 200, "", "") assert.Equal(t, 22, len(books)) } func TestGetReadBooksHandler_DemoNoLimit(t *testing.T) { router := testutils.TestSetup() token := testutils.ConnectDemoUser(router) books := testGetReadBooksHandler(t, router, token, 200, "100", "") assert.Equal(t, 22, len(books)) } func TestGetReadBooksHandler_DemoLowerLimit(t *testing.T) { router := testutils.TestSetup() token := testutils.ConnectDemoUser(router) books := testGetReadBooksHandler(t, router, token, 200, "5", "") assert.Equal(t, 5, len(books)) } func TestGetReadBooksHandler_DemoOffset(t *testing.T) { router := testutils.TestSetup() token := testutils.ConnectDemoUser(router) books := testGetReadBooksHandler(t, router, token, 200, "20", "10") assert.Equal(t, 12, len(books)) } func TestGetReadBooksHandler_Demo2(t *testing.T) { router := testutils.TestSetup() token := testutils.ConnectDemo2User(router) books := testGetReadBooksHandler(t, router, token, 200, "", "") assert.Equal(t, 3, len(books)) } func TestGetReadBooksHandler_CheckOneBook(t *testing.T) { router := testutils.TestSetup() token := testutils.ConnectDemo2User(router) books := testGetReadBooksHandler(t, router, token, 200, "100", "") var book bookUserGet for _, b := range books { if b.Title == "De sang-froid" { book = b } } assert.Equal(t, bookUserGet{ BookId: 18, Title: "De sang-froid", Author: "Truman Capote", Rating: 6, Read: true, }, book) } func testGetReadBooksHandler(t *testing.T, router *gin.Engine, userToken string, expectedCode int, limit string, offset string) []bookUserGet { u, err := url.Parse("/mybooks/read") 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() } return testGetbooksHandler(t, router, userToken, expectedCode, u.String()) }