diff --git a/model/config.go b/model/config.go index bef05feb75..b6fc1ec4e3 100644 --- a/model/config.go +++ b/model/config.go @@ -2177,7 +2177,7 @@ type PluginSettings struct { PluginStates map[string]*PluginState } -func (s *PluginSettings) SetDefaults() { +func (s *PluginSettings) SetDefaults(ls LogSettings) { if s.Enable == nil { s.Enable = NewBool(true) } @@ -2215,7 +2215,8 @@ func (s *PluginSettings) SetDefaults() { } if s.PluginStates["com.mattermost.nps"] == nil { - s.PluginStates["com.mattermost.nps"] = &PluginState{Enable: true} + // Enable the NPS plugin by default if diagnostics are enabled + s.PluginStates["com.mattermost.nps"] = &PluginState{Enable: ls.EnableDiagnostics == nil || *ls.EnableDiagnostics} } } @@ -2441,7 +2442,7 @@ func (o *Config) SetDefaults() { o.AnnouncementSettings.SetDefaults() o.ThemeSettings.SetDefaults() o.ClusterSettings.SetDefaults() - o.PluginSettings.SetDefaults() + o.PluginSettings.SetDefaults(o.LogSettings) o.AnalyticsSettings.SetDefaults() o.ComplianceSettings.SetDefaults() o.LocalizationSettings.SetDefaults() diff --git a/model/config_test.go b/model/config_test.go index 04531ad458..4edaaaa4c4 100644 --- a/model/config_test.go +++ b/model/config_test.go @@ -128,18 +128,52 @@ func TestConfigDefaultServiceSettingsExperimentalGroupUnreadChannels(t *testing. } func TestConfigDefaultNPSPluginState(t *testing.T) { - c1 := Config{} - c1.SetDefaults() + t.Run("should enable NPS plugin by default", func(t *testing.T) { + c1 := Config{} + c1.SetDefaults() - if c1.PluginSettings.PluginStates["com.mattermost.nps"].Enable != true { - t.Fatal("PluginSettings.PluginStates[\"com.mattermost.nps\"].Enable should default to true") - } + assert.True(t, c1.PluginSettings.PluginStates["com.mattermost.nps"].Enable) + }) - c1.PluginSettings.PluginStates["com.mattermost.nps"].Enable = false - c1.SetDefaults() - if c1.PluginSettings.PluginStates["com.mattermost.nps"].Enable != false { - t.Fatal("PluginSettings.PluginStates[\"com.mattermost.nps\"].Enable should remain false") - } + t.Run("should enable NPS plugin if diagnostics are enabled", func(t *testing.T) { + c1 := Config{ + LogSettings: LogSettings{ + EnableDiagnostics: NewBool(true), + }, + } + + c1.SetDefaults() + + assert.True(t, c1.PluginSettings.PluginStates["com.mattermost.nps"].Enable) + }) + + t.Run("should not enable NPS plugin if diagnostics are disabled", func(t *testing.T) { + c1 := Config{ + LogSettings: LogSettings{ + EnableDiagnostics: NewBool(false), + }, + } + + c1.SetDefaults() + + assert.False(t, c1.PluginSettings.PluginStates["com.mattermost.nps"].Enable) + }) + + t.Run("should not re-enable NPS plugin after it has been disabled", func(t *testing.T) { + c1 := Config{ + PluginSettings: PluginSettings{ + PluginStates: map[string]*PluginState{ + "com.mattermost.nps": { + Enable: false, + }, + }, + }, + } + + c1.SetDefaults() + + assert.False(t, c1.PluginSettings.PluginStates["com.mattermost.nps"].Enable) + }) } func TestTeamSettingsIsValidSiteNameEmpty(t *testing.T) {