redeem_export_handler_test.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package admin
  2. import (
  3. "net/http"
  4. "net/http/httptest"
  5. "testing"
  6. "github.com/gin-gonic/gin"
  7. "github.com/stretchr/testify/require"
  8. )
  9. func setupRedeemExportRouter() (*gin.Engine, *stubAdminService) {
  10. gin.SetMode(gin.TestMode)
  11. router := gin.New()
  12. adminSvc := newStubAdminService()
  13. h := NewRedeemHandler(adminSvc, nil)
  14. router.GET("/api/v1/admin/redeem-codes/export", h.Export)
  15. return router, adminSvc
  16. }
  17. func TestRedeemExportPassesSearchAndSort(t *testing.T) {
  18. router, adminSvc := setupRedeemExportRouter()
  19. rec := httptest.NewRecorder()
  20. req := httptest.NewRequest(http.MethodGet, "/api/v1/admin/redeem-codes/export?type=balance&status=unused&search=ABC&sort_by=value&sort_order=asc", nil)
  21. router.ServeHTTP(rec, req)
  22. require.Equal(t, http.StatusOK, rec.Code)
  23. require.Equal(t, 1, adminSvc.lastListRedeemCodes.calls)
  24. require.Equal(t, "balance", adminSvc.lastListRedeemCodes.codeType)
  25. require.Equal(t, "unused", adminSvc.lastListRedeemCodes.status)
  26. require.Equal(t, "ABC", adminSvc.lastListRedeemCodes.search)
  27. require.Equal(t, "value", adminSvc.lastListRedeemCodes.sortBy)
  28. require.Equal(t, "asc", adminSvc.lastListRedeemCodes.sortOrder)
  29. }
  30. func TestRedeemExportSortDefaults(t *testing.T) {
  31. router, adminSvc := setupRedeemExportRouter()
  32. rec := httptest.NewRecorder()
  33. req := httptest.NewRequest(http.MethodGet, "/api/v1/admin/redeem-codes/export", nil)
  34. router.ServeHTTP(rec, req)
  35. require.Equal(t, http.StatusOK, rec.Code)
  36. require.Equal(t, 1, adminSvc.lastListRedeemCodes.calls)
  37. require.Equal(t, "id", adminSvc.lastListRedeemCodes.sortBy)
  38. require.Equal(t, "desc", adminSvc.lastListRedeemCodes.sortOrder)
  39. }