You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

46 lines
1.4 KiB

  1. package model
  2. import (
  3. "testing"
  4. "github.com/QuantumNous/new-api/common"
  5. "github.com/QuantumNous/new-api/setting"
  6. "github.com/QuantumNous/new-api/setting/operation_setting"
  7. "github.com/stretchr/testify/require"
  8. )
  9. func TestUpdateOptionMapSynchronizesBooleanAndNumericRuntimeSettings(t *testing.T) {
  10. oldTaskEnabled := common.TaskEnabled
  11. oldPrice := operation_setting.Price
  12. oldOptionMap := common.OptionMap
  13. common.OptionMap = make(map[string]string)
  14. t.Cleanup(func() {
  15. common.TaskEnabled = oldTaskEnabled
  16. operation_setting.Price = oldPrice
  17. common.OptionMap = oldOptionMap
  18. })
  19. require.NoError(t, updateOptionMap("TaskEnabled", "false"))
  20. require.False(t, common.TaskEnabled)
  21. require.Equal(t, "false", common.OptionMap["TaskEnabled"])
  22. require.NoError(t, updateOptionMap("Price", "2.5"))
  23. require.Equal(t, 2.5, operation_setting.Price)
  24. }
  25. func TestUpdateOptionMapRejectsInvalidStructuredSettingsWithoutReplacingExistingValue(t *testing.T) {
  26. oldOptionMap := common.OptionMap
  27. common.OptionMap = make(map[string]string)
  28. oldAutoGroups := setting.AutoGroups2JsonString()
  29. t.Cleanup(func() {
  30. common.OptionMap = oldOptionMap
  31. require.NoError(t, setting.UpdateAutoGroupsByJsonString(oldAutoGroups))
  32. })
  33. require.NoError(t, setting.UpdateAutoGroupsByJsonString(`["default"]`))
  34. err := updateOptionMap("AutoGroups", "not-json")
  35. require.Error(t, err)
  36. require.Equal(t, []string{"default"}, setting.GetAutoGroups())
  37. }