package apitest import ( "net/url" "testing" "git.artlef.fr/bibliomane/internal/dto" "git.artlef.fr/bibliomane/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) result := testGetReadBooksHandler(t, router, token, 200, "", "") assert.Equal(t, 22, len(result.Books)) assert.Equal(t, int64(22), result.Count) } func TestGetReadBooksHandler_DemoNoLimit(t *testing.T) { router := testutils.TestSetup() token := testutils.ConnectDemoUser(router) result := testGetReadBooksHandler(t, router, token, 200, "100", "") assert.Equal(t, 22, len(result.Books)) assert.Equal(t, int64(22), result.Count) } func TestGetReadBooksHandler_DemoLowerLimit(t *testing.T) { router := testutils.TestSetup() token := testutils.ConnectDemoUser(router) result := testGetReadBooksHandler(t, router, token, 200, "5", "") assert.Equal(t, 5, len(result.Books)) assert.Equal(t, int64(22), result.Count) } func TestGetReadBooksHandler_DemoOffset(t *testing.T) { router := testutils.TestSetup() token := testutils.ConnectDemoUser(router) result := testGetReadBooksHandler(t, router, token, 200, "20", "10") assert.Equal(t, 12, len(result.Books)) assert.Equal(t, int64(22), result.Count) } func TestGetReadBooksHandler_Demo2(t *testing.T) { router := testutils.TestSetup() token := testutils.ConnectDemo2User(router) result := testGetReadBooksHandler(t, router, token, 200, "", "") assert.Equal(t, 3, len(result.Books)) assert.Equal(t, int64(3), result.Count) } func TestGetReadBooksHandler_CheckOneBook(t *testing.T) { router := testutils.TestSetup() token := testutils.ConnectDemo2User(router) result := testGetReadBooksHandler(t, router, token, 200, "100", "") var book dto.BookUserGetBook for _, b := range result.Books { if b.Title == "De sang-froid" { book = b } } assert.Equal(t, dto.BookUserGetBook{ ID: 18, Title: "De sang-froid", Author: "Truman Capote", Rating: 6, Read: true, CoverPath: "/static/bookcover/desangfroid.jpg", }, book) } func testGetReadBooksHandler(t *testing.T, router *gin.Engine, userToken string, expectedCode int, limit string, offset string) dto.BookUserGet { u, err := url.Parse("/ws/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()) }