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 }