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

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package localcachelayer
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  	"github.com/stretchr/testify/require"
    11  
    12  	"github.com/mattermost/mattermost-server/v5/store/storetest"
    13  	"github.com/mattermost/mattermost-server/v5/store/storetest/mocks"
    14  )
    15  
    16  func TestTeamStore(t *testing.T) {
    17  	StoreTest(t, storetest.TestTeamStore)
    18  }
    19  
    20  func TestTeamStoreCache(t *testing.T) {
    21  	fakeUserId := "123"
    22  	fakeUserTeamIds := []string{"1", "2", "3"}
    23  
    24  	t.Run("first call not cached, second cached and returning same data", func(t *testing.T) {
    25  		mockStore := getMockStore()
    26  		mockCacheProvider := getMockCacheProvider()
    27  		cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider)
    28  		require.NoError(t, err)
    29  
    30  		gotUserTeamIds, err := cachedStore.Team().GetUserTeamIds(fakeUserId, true)
    31  		require.NoError(t, err)
    32  		assert.Equal(t, fakeUserTeamIds, gotUserTeamIds)
    33  		mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 1)
    34  
    35  		gotUserTeamIds, err = cachedStore.Team().GetUserTeamIds(fakeUserId, true)
    36  		require.NoError(t, err)
    37  		assert.Equal(t, fakeUserTeamIds, gotUserTeamIds)
    38  		mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 1)
    39  	})
    40  
    41  	t.Run("first call not cached, second force not cached", func(t *testing.T) {
    42  		mockStore := getMockStore()
    43  		mockCacheProvider := getMockCacheProvider()
    44  		cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider)
    45  		require.NoError(t, err)
    46  
    47  		gotUserTeamIds, err := cachedStore.Team().GetUserTeamIds(fakeUserId, true)
    48  		require.NoError(t, err)
    49  		assert.Equal(t, fakeUserTeamIds, gotUserTeamIds)
    50  		mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 1)
    51  
    52  		gotUserTeamIds, err = cachedStore.Team().GetUserTeamIds(fakeUserId, false)
    53  		require.NoError(t, err)
    54  		assert.Equal(t, fakeUserTeamIds, gotUserTeamIds)
    55  		mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 2)
    56  	})
    57  
    58  	t.Run("first call not cached, invalidate, and then not cached again", func(t *testing.T) {
    59  		mockStore := getMockStore()
    60  		mockCacheProvider := getMockCacheProvider()
    61  		cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider)
    62  		require.NoError(t, err)
    63  
    64  		gotUserTeamIds, err := cachedStore.Team().GetUserTeamIds(fakeUserId, true)
    65  		require.NoError(t, err)
    66  		assert.Equal(t, fakeUserTeamIds, gotUserTeamIds)
    67  		mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 1)
    68  
    69  		cachedStore.Team().InvalidateAllTeamIdsForUser(fakeUserId)
    70  
    71  		gotUserTeamIds, err = cachedStore.Team().GetUserTeamIds(fakeUserId, true)
    72  		require.NoError(t, err)
    73  		assert.Equal(t, fakeUserTeamIds, gotUserTeamIds)
    74  		mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 2)
    75  	})
    76  
    77  }