mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-14 12:02:27 +08:00
34 lines
1.0 KiB
Go
34 lines
1.0 KiB
Go
package admin
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestUpdateGroupRequestLimitFieldsTriState(t *testing.T) {
|
|
t.Run("omitted means unchanged", func(t *testing.T) {
|
|
var req UpdateGroupRequest
|
|
require.NoError(t, json.Unmarshal([]byte(`{}`), &req))
|
|
require.Nil(t, req.DailyLimitUSD.ToServiceInput())
|
|
require.Nil(t, req.WeeklyLimitUSD.ToServiceInput())
|
|
require.Nil(t, req.MonthlyLimitUSD.ToServiceInput())
|
|
})
|
|
|
|
t.Run("null means unlimited", func(t *testing.T) {
|
|
var req UpdateGroupRequest
|
|
require.NoError(t, json.Unmarshal([]byte(`{"daily_limit_usd":null}`), &req))
|
|
limit := req.DailyLimitUSD.ToServiceInput()
|
|
require.NotNil(t, limit)
|
|
require.Negative(t, *limit)
|
|
})
|
|
|
|
t.Run("number is preserved", func(t *testing.T) {
|
|
var req UpdateGroupRequest
|
|
require.NoError(t, json.Unmarshal([]byte(`{"weekly_limit_usd":0,"monthly_limit_usd":42.5}`), &req))
|
|
require.Equal(t, 0.0, *req.WeeklyLimitUSD.ToServiceInput())
|
|
require.Equal(t, 42.5, *req.MonthlyLimitUSD.ToServiceInput())
|
|
})
|
|
}
|