group_handler_reasoning_effort_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package admin
  2. import (
  3. "encoding/json"
  4. "testing"
  5. "github.com/stretchr/testify/require"
  6. )
  7. func TestUpdateGroupRequestReasoningEffortMappingsTriState(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.ReasoningEffortMappings)
  12. })
  13. t.Run("empty array means clear", func(t *testing.T) {
  14. var req UpdateGroupRequest
  15. require.NoError(t, json.Unmarshal([]byte(`{"reasoning_effort_mappings":[]}`), &req))
  16. require.NotNil(t, req.ReasoningEffortMappings)
  17. require.Empty(t, *req.ReasoningEffortMappings)
  18. })
  19. t.Run("non empty array means replace", func(t *testing.T) {
  20. var req UpdateGroupRequest
  21. require.NoError(t, json.Unmarshal([]byte(`{"reasoning_effort_mappings":[{"from":"max","to":"xhigh"}]}`), &req))
  22. require.NotNil(t, req.ReasoningEffortMappings)
  23. require.Len(t, *req.ReasoningEffortMappings, 1)
  24. require.Equal(t, "max", (*req.ReasoningEffortMappings)[0].From)
  25. require.Equal(t, "xhigh", (*req.ReasoningEffortMappings)[0].To)
  26. })
  27. t.Run("accepts model scoped mappings", func(t *testing.T) {
  28. var req UpdateGroupRequest
  29. require.NoError(t, json.Unmarshal([]byte(`{"reasoning_effort_mappings":[{"from":"max","to":"low","match_type":"prefix","model":"gpt"}]}`), &req))
  30. require.NotNil(t, req.ReasoningEffortMappings)
  31. require.Len(t, *req.ReasoningEffortMappings, 1)
  32. require.Equal(t, "max", (*req.ReasoningEffortMappings)[0].From)
  33. require.Equal(t, "low", (*req.ReasoningEffortMappings)[0].To)
  34. require.Equal(t, "prefix", (*req.ReasoningEffortMappings)[0].MatchType)
  35. require.Equal(t, "gpt", (*req.ReasoningEffortMappings)[0].Model)
  36. })
  37. }