group_handler_limit_test.go 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. package admin
  2. import (
  3. "encoding/json"
  4. "testing"
  5. "github.com/stretchr/testify/require"
  6. )
  7. func TestUpdateGroupRequestLimitFieldsTriState(t *testing.T) {
  8. t.Run("omitted means unchanged", func(t *testing.T) {
  9. var req UpdateGroupRequest
  10. require.NoError(t, json.Unmarshal([]byte(`{}`), &req))
  11. require.Nil(t, req.DailyLimitUSD.ToServiceInput())
  12. require.Nil(t, req.WeeklyLimitUSD.ToServiceInput())
  13. require.Nil(t, req.MonthlyLimitUSD.ToServiceInput())
  14. })
  15. t.Run("null means unlimited", func(t *testing.T) {
  16. var req UpdateGroupRequest
  17. require.NoError(t, json.Unmarshal([]byte(`{"daily_limit_usd":null}`), &req))
  18. limit := req.DailyLimitUSD.ToServiceInput()
  19. require.NotNil(t, limit)
  20. require.Negative(t, *limit)
  21. })
  22. t.Run("number is preserved", func(t *testing.T) {
  23. var req UpdateGroupRequest
  24. require.NoError(t, json.Unmarshal([]byte(`{"weekly_limit_usd":0,"monthly_limit_usd":42.5}`), &req))
  25. require.Equal(t, 0.0, *req.WeeklyLimitUSD.ToServiceInput())
  26. require.Equal(t, 42.5, *req.MonthlyLimitUSD.ToServiceInput())
  27. })
  28. }