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
Этот коммит содержится в:
коммит произвёл
Jesse Hallam
родитель
06261d32ba
Коммит
8bd182c38f
@@ -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()
|
||||
|
||||
Ссылка в новой задаче
Block a user