50 lines
1.6 KiB
Go
50 lines
1.6 KiB
Go
package admin
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func setupRedeemExportRouter() (*gin.Engine, *stubAdminService) {
|
|
gin.SetMode(gin.TestMode)
|
|
router := gin.New()
|
|
adminSvc := newStubAdminService()
|
|
|
|
h := NewRedeemHandler(adminSvc, nil)
|
|
router.GET("/api/v1/admin/redeem-codes/export", h.Export)
|
|
return router, adminSvc
|
|
}
|
|
|
|
func TestRedeemExportPassesSearchAndSort(t *testing.T) {
|
|
router, adminSvc := setupRedeemExportRouter()
|
|
|
|
rec := httptest.NewRecorder()
|
|
req := httptest.NewRequest(http.MethodGet, "/api/v1/admin/redeem-codes/export?type=balance&status=unused&search=ABC&sort_by=value&sort_order=asc", nil)
|
|
router.ServeHTTP(rec, req)
|
|
require.Equal(t, http.StatusOK, rec.Code)
|
|
|
|
require.Equal(t, 1, adminSvc.lastListRedeemCodes.calls)
|
|
require.Equal(t, "balance", adminSvc.lastListRedeemCodes.codeType)
|
|
require.Equal(t, "unused", adminSvc.lastListRedeemCodes.status)
|
|
require.Equal(t, "ABC", adminSvc.lastListRedeemCodes.search)
|
|
require.Equal(t, "value", adminSvc.lastListRedeemCodes.sortBy)
|
|
require.Equal(t, "asc", adminSvc.lastListRedeemCodes.sortOrder)
|
|
}
|
|
|
|
func TestRedeemExportSortDefaults(t *testing.T) {
|
|
router, adminSvc := setupRedeemExportRouter()
|
|
|
|
rec := httptest.NewRecorder()
|
|
req := httptest.NewRequest(http.MethodGet, "/api/v1/admin/redeem-codes/export", nil)
|
|
router.ServeHTTP(rec, req)
|
|
require.Equal(t, http.StatusOK, rec.Code)
|
|
|
|
require.Equal(t, 1, adminSvc.lastListRedeemCodes.calls)
|
|
require.Equal(t, "id", adminSvc.lastListRedeemCodes.sortBy)
|
|
require.Equal(t, "desc", adminSvc.lastListRedeemCodes.sortOrder)
|
|
}
|