2023-07-09 02:37:41 +02:00
|
|
|
package api
|
2021-02-25 05:26:13 +01:00
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"testing"
|
2023-07-09 02:37:41 +02:00
|
|
|
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
|
|
"github.com/valyala/fasthttp"
|
2021-02-25 05:26:13 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestExtractPageAndPageSizeFromRequest(t *testing.T) {
|
|
|
|
type Scenario struct {
|
|
|
|
Name string
|
|
|
|
Page string
|
|
|
|
PageSize string
|
|
|
|
ExpectedPage int
|
|
|
|
ExpectedPageSize int
|
|
|
|
}
|
|
|
|
scenarios := []Scenario{
|
|
|
|
{
|
|
|
|
Page: "1",
|
|
|
|
PageSize: "20",
|
|
|
|
ExpectedPage: 1,
|
|
|
|
ExpectedPageSize: 20,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Page: "2",
|
|
|
|
PageSize: "10",
|
|
|
|
ExpectedPage: 2,
|
|
|
|
ExpectedPageSize: 10,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Page: "2",
|
|
|
|
PageSize: "10",
|
|
|
|
ExpectedPage: 2,
|
|
|
|
ExpectedPageSize: 10,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Page: "1",
|
|
|
|
PageSize: "999999",
|
|
|
|
ExpectedPage: 1,
|
|
|
|
ExpectedPageSize: MaximumPageSize,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Page: "-1",
|
|
|
|
PageSize: "-1",
|
|
|
|
ExpectedPage: DefaultPage,
|
|
|
|
ExpectedPageSize: DefaultPageSize,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Page: "invalid",
|
|
|
|
PageSize: "invalid",
|
|
|
|
ExpectedPage: DefaultPage,
|
|
|
|
ExpectedPageSize: DefaultPageSize,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, scenario := range scenarios {
|
|
|
|
t.Run("page-"+scenario.Page+"-pageSize-"+scenario.PageSize, func(t *testing.T) {
|
2023-07-09 02:37:41 +02:00
|
|
|
//request := httptest.NewRequest("GET", fmt.Sprintf("/api/v1/statuses?page=%s&pageSize=%s", scenario.Page, scenario.PageSize), http.NoBody)
|
|
|
|
app := fiber.New()
|
|
|
|
c := app.AcquireCtx(&fasthttp.RequestCtx{})
|
|
|
|
defer app.ReleaseCtx(c)
|
|
|
|
c.Request().SetRequestURI(fmt.Sprintf("/api/v1/statuses?page=%s&pageSize=%s", scenario.Page, scenario.PageSize))
|
|
|
|
actualPage, actualPageSize := extractPageAndPageSizeFromRequest(c)
|
2021-02-25 05:26:13 +01:00
|
|
|
if actualPage != scenario.ExpectedPage {
|
|
|
|
t.Errorf("expected %d, got %d", scenario.ExpectedPage, actualPage)
|
|
|
|
}
|
|
|
|
if actualPageSize != scenario.ExpectedPageSize {
|
|
|
|
t.Errorf("expected %d, got %d", scenario.ExpectedPageSize, actualPageSize)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|