package model import ( "testing" "github.com/QuantumNous/new-api/common" "github.com/QuantumNous/new-api/setting" "github.com/QuantumNous/new-api/setting/operation_setting" "github.com/stretchr/testify/require" ) func TestUpdateOptionMapSynchronizesBooleanAndNumericRuntimeSettings(t *testing.T) { oldTaskEnabled := common.TaskEnabled oldPrice := operation_setting.Price oldOptionMap := common.OptionMap common.OptionMap = make(map[string]string) t.Cleanup(func() { common.TaskEnabled = oldTaskEnabled operation_setting.Price = oldPrice common.OptionMap = oldOptionMap }) require.NoError(t, updateOptionMap("TaskEnabled", "false")) require.False(t, common.TaskEnabled) require.Equal(t, "false", common.OptionMap["TaskEnabled"]) require.NoError(t, updateOptionMap("Price", "2.5")) require.Equal(t, 2.5, operation_setting.Price) } func TestUpdateOptionMapRejectsInvalidStructuredSettingsWithoutReplacingExistingValue(t *testing.T) { oldOptionMap := common.OptionMap common.OptionMap = make(map[string]string) oldAutoGroups := setting.AutoGroups2JsonString() t.Cleanup(func() { common.OptionMap = oldOptionMap require.NoError(t, setting.UpdateAutoGroupsByJsonString(oldAutoGroups)) }) require.NoError(t, setting.UpdateAutoGroupsByJsonString(`["default"]`)) err := updateOptionMap("AutoGroups", "not-json") require.Error(t, err) require.Equal(t, []string{"default"}, setting.GetAutoGroups()) }