github.com/xzl8028/xenia-server@v0.0.0-20190809101854-18450a97da63/store/sqlstore/preference_store_test.go (about)

     1  // Copyright (c) 2015-present Xenia, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package sqlstore
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/xzl8028/xenia-server/model"
    10  	"github.com/xzl8028/xenia-server/store"
    11  	"github.com/xzl8028/xenia-server/store/storetest"
    12  
    13  	"github.com/stretchr/testify/require"
    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.FEATURE_TOGGLE_PREFIX + feature1,
    33  				Value:    "true",
    34  			},
    35  			{
    36  				UserId:   userId2,
    37  				Category: category,
    38  				Name:     store.FEATURE_TOGGLE_PREFIX + feature1,
    39  				Value:    "false",
    40  			},
    41  			{
    42  				UserId:   userId1,
    43  				Category: category,
    44  				Name:     store.FEATURE_TOGGLE_PREFIX + feature2,
    45  				Value:    "false",
    46  			},
    47  			{
    48  				UserId:   userId2,
    49  				Category: category,
    50  				Name:     store.FEATURE_TOGGLE_PREFIX + feature2,
    51  				Value:    "true",
    52  			},
    53  		}
    54  
    55  		err := ss.Preference().Save(&features)
    56  		require.Nil(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.FEATURE_TOGGLE_PREFIX+`%'`, map[string]interface{}{"Category": model.PREFERENCE_CATEGORY_ADVANCED_SETTINGS, "Val": "false"}); err != nil {
    66  			t.Fatal(err)
    67  		} else if val != 0 {
    68  			t.Fatalf("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.FEATURE_TOGGLE_PREFIX+`%'`, map[string]interface{}{"Category": model.PREFERENCE_CATEGORY_ADVANCED_SETTINGS, "Val": "true"}); err != nil {
    77  			t.Fatal(err)
    78  		} else if val == 0 {
    79  			t.Fatalf("Found %d features with value 'true', expected to find at least %d features", val, 2)
    80  		}
    81  	})
    82  }