MM-14145: The config store Set will now Save automatically (#10377)

* MM-14145: The config store Set will now Save automatically

When UpdateConfig (and configStore.Set) is called in admin.go and
config.go, commonStore.Set now takes a store-specific persist function.
It uses that persist function to save the configuration automatically.

Removed: Now callers do not have to call configStore.Save or
app.PersistConfig, and those functions have been removed.

Possible downside: this means a "failed to persist config" error can now
be thrown during a app.UpdateConfig or commonStore.Set call. But
considering application code never really sets a config without saving
it (except in the test cases, which were testing that -- see below), it
seems fine to group these responsibilities.

Also removed: tests for 'set without save'. Since that can not happen
anymore, the tests are not needed.

* Removed Save completely, cleaned up formatting, joined save test with
set tests.

* fixed shadowed variable error
Этот коммит содержится в:
Christopher Poile
2019-02-28 10:51:42 -05:00
коммит произвёл Jesse Hallam
родитель 06261d32ba
Коммит 8bd182c38f
11 изменённых файлов: 39 добавлений и 107 удалений

Просмотреть файл

@@ -268,6 +268,29 @@ func TestDatabaseStoreSet(t *testing.T) {
assert.Equal(t, "http://new", *ds.Get().ServiceSettings.SiteURL)
})
t.Run("set with automatic save", func(t *testing.T) {
_, tearDown := setupConfigDatabase(t, minimalConfig)
defer tearDown()
ds, err := config.NewDatabaseStore(fmt.Sprintf("%s://%s", *sqlSettings.DriverName, *sqlSettings.DataSource))
require.NoError(t, err)
defer ds.Close()
newCfg := &model.Config{
ServiceSettings: model.ServiceSettings{
SiteURL: sToP("http://new"),
},
}
_, err = ds.Set(newCfg)
require.NoError(t, err)
err = ds.Load()
require.NoError(t, err)
assert.Equal(t, "http://new", *ds.Get().ServiceSettings.SiteURL)
})
t.Run("persist failed", func(t *testing.T) {
t.Skip("skipping persistence test inside Set")
_, tearDown := setupConfigDatabase(t, emptyConfig)
@@ -421,45 +444,6 @@ func TestDatabaseStoreLoad(t *testing.T) {
})
}
func TestDatabaseStoreSave(t *testing.T) {
_, tearDown := setupConfigDatabase(t, minimalConfig)
defer tearDown()
sqlSettings := mainHelper.GetSqlSettings()
ds, err := config.NewDatabaseStore(fmt.Sprintf("%s://%s", *sqlSettings.DriverName, *sqlSettings.DataSource))
require.NoError(t, err)
defer ds.Close()
newCfg := &model.Config{
ServiceSettings: model.ServiceSettings{
SiteURL: sToP("http://new"),
},
}
t.Run("set without save", func(t *testing.T) {
_, err = ds.Set(newCfg)
require.NoError(t, err)
err = ds.Load()
require.NoError(t, err)
assert.Equal(t, "http://minimal", *ds.Get().ServiceSettings.SiteURL)
})
t.Run("set with save", func(t *testing.T) {
_, err = ds.Set(newCfg)
require.NoError(t, err)
err = ds.Save()
require.NoError(t, err)
err = ds.Load()
require.NoError(t, err)
assert.Equal(t, "http://new", *ds.Get().ServiceSettings.SiteURL)
})
}
func TestDatabaseStoreString(t *testing.T) {
_, tearDown := setupConfigDatabase(t, emptyConfig)
defer tearDown()