package message

import (
	"net/http/httptest"
	"testing"

	"github.com/gin-gonic/gin"
	"github.com/stretchr/testify/require"
)

func TestContinueRequestBindQueryUsesDefaultLimit(t *testing.T) {
	t.Helper()
	gin.SetMode(gin.TestMode)

	recorder := httptest.NewRecorder()
	ctx, _ := gin.CreateTestContext(recorder)
	ctx.Request = httptest.NewRequest("GET", "/?continueToken=next-page", nil)

	var req ContinueRequest
	err := ctx.BindQuery(&req)
	require.NoError(t, err)
	require.EqualValues(t, 100, req.Limit)
	require.Equal(t, "next-page", req.ContinueToken)
}

func TestContinueRequestBindQueryKeepsExplicitLimit(t *testing.T) {
	t.Helper()
	gin.SetMode(gin.TestMode)

	recorder := httptest.NewRecorder()
	ctx, _ := gin.CreateTestContext(recorder)
	ctx.Request = httptest.NewRequest("GET", "/?limit=25&continueToken=next-page", nil)

	var req ContinueRequest
	err := ctx.BindQuery(&req)
	require.NoError(t, err)
	require.EqualValues(t, 25, req.Limit)
	require.Equal(t, "next-page", req.ContinueToken)
}
