github.com/haalcala/mattermost-server-change-repo@v0.0.0-20210713015153-16753fbeee5f/store/sqlstore/preference_store_test.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package sqlstore
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/require"
    10  
    11  	"github.com/mattermost/mattermost-server/v5/model"
    12  	"github.com/mattermost/mattermost-server/v5/store"
    13  	"github.com/mattermost/mattermost-server/v5/store/storetest"
    14  )
    15  
    16  func TestPreferenceStore(t *testing.T) {
    17  	StoreTest(t, storetest.TestPreferenceStore)
    18  }
    19  
    20  func TestDeleteUnusedFeatures(t *testing.T) {
    21  	StoreTest(t, func(t *testing.T, ss store.Store) {
    22  		userId1 := model.NewId()
    23  		userId2 := model.NewId()
    24  		category := model.PREFERENCE_CATEGORY_ADVANCED_SETTINGS
    25  		feature1 := "feature1"
    26  		feature2 := "feature2"
    27  
    28  		features := model.Preferences{
    29  			{
    30  				UserId:   userId1,
    31  				Category: category,
    32  				Name:     store.FeatureTogglePrefix + feature1,
    33  				Value:    "true",
    34  			},
    35  			{
    36  				UserId:   userId2,
    37  				Category: category,
    38  				Name:     store.FeatureTogglePrefix + feature1,
    39  				Value:    "false",
    40  			},
    41  			{
    42  				UserId:   userId1,
    43  				Category: category,
    44  				Name:     store.FeatureTogglePrefix + feature2,
    45  				Value:    "false",
    46  			},
    47  			{
    48  				UserId:   userId2,
    49  				Category: category,
    50  				Name:     store.FeatureTogglePrefix + feature2,
    51  				Value:    "true",
    52  			},
    53  		}
    54  
    55  		err := ss.Preference().Save(&features)
    56  		require.NoError(t, err)
    57  
    58  		ss.Preference().(*SqlPreferenceStore).deleteUnusedFeatures()
    59  
    60  		//make sure features with value "false" have actually been deleted from the database
    61  		if val, err := ss.Preference().(*SqlPreferenceStore).GetReplica().SelectInt(`SELECT COUNT(*)
    62                              FROM Preferences
    63                      WHERE Category = :Category
    64                      AND Value = :Val
    65                      AND Name LIKE '`+store.FeatureTogglePrefix+`%'`, map[string]interface{}{"Category": model.PREFERENCE_CATEGORY_ADVANCED_SETTINGS, "Val": "false"}); err != nil {
    66  			require.NoError(t, err)
    67  		} else if val != 0 {
    68  			require.Fail(t, "Found %d features with value 'false', expected all to be deleted", val)
    69  		}
    70  		//
    71  		// make sure features with value "true" remain saved
    72  		if val, err := ss.Preference().(*SqlPreferenceStore).GetReplica().SelectInt(`SELECT COUNT(*)
    73                              FROM Preferences
    74                      WHERE Category = :Category
    75                      AND Value = :Val
    76                      AND Name LIKE '`+store.FeatureTogglePrefix+`%'`, map[string]interface{}{"Category": model.PREFERENCE_CATEGORY_ADVANCED_SETTINGS, "Val": "true"}); err != nil {
    77  			require.NoError(t, err)
    78  		} else if val == 0 {
    79  			require.Fail(t, "Found %d features with value 'true', expected to find at least %d features", val, 2)
    80  		}
    81  	})
    82  }