diff --git a/src/internal/config/config.go b/src/internal/config/config.go index 660828170..400cf58af 100644 --- a/src/internal/config/config.go +++ b/src/internal/config/config.go @@ -968,7 +968,14 @@ func (c *Config) SetCheckPolicyInterval(interval int) error { func (c *Config) SetStartCheckRange(checkRange []int) error { c.StartCheckRange = checkRange - return c.save(dSettingsKeyStartCheckRange, checkRange) + + // TODO: remove this after bug of dde-dconfig fixed + variants := make([]dbus.Variant, 0, len(checkRange)) + for _, item := range checkRange { + variants = append(variants, dbus.MakeVariant(item)) + } + + return c.save(dSettingsKeyStartCheckRange, variants) } const ( diff --git a/src/internal/config/config_test.go b/src/internal/config/config_test.go index b30981847..ea9b59abc 100644 --- a/src/internal/config/config_test.go +++ b/src/internal/config/config_test.go @@ -10,7 +10,10 @@ import ( "testing" "time" + "github.com/godbus/dbus/v5" + ConfigManager "github.com/linuxdeepin/go-dbus-factory/org.desktopspec.ConfigManager" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" ) @@ -78,3 +81,33 @@ func TestConfig(t *testing.T) { assert.Equal(t, configAfter.AppstoreRegion, configBefore.AppstoreRegion+"Test") assert.Equal(t, configAfter.UpdateMode, configBefore.UpdateMode+1) } + +func TestSetStartCheckRangeSavesDBusVariants(t *testing.T) { + manager := &ConfigManager.MockManager{} + cfg := &Config{ + dsLastoreManager: manager, + } + checkRange := []int{22, 21} + + manager.MockInterfaceManager. + On("SetValue", dbus.Flags(0), dSettingsKeyStartCheckRange, mock.MatchedBy(func(value dbus.Variant) bool { + variants, ok := value.Value().([]dbus.Variant) + if !ok || len(variants) != len(checkRange) { + return false + } + for i, variant := range variants { + item, ok := variant.Value().(int) + if !ok || item != checkRange[i] { + return false + } + } + return true + })). + Return(nil). + Once() + + err := cfg.SetStartCheckRange(checkRange) + require.NoError(t, err) + assert.Equal(t, checkRange, cfg.StartCheckRange) + manager.MockInterfaceManager.AssertExpectations(t) +}