github.com/mattermosttest/mattermost-server/v5@v5.0.0-20200917143240-9dfa12e121f9/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/mattermost/mattermost-server/v5/store/storetest" 10 "github.com/mattermost/mattermost-server/v5/store/storetest/mocks" 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 ) 14 15 func TestTeamStore(t *testing.T) { 16 StoreTest(t, storetest.TestTeamStore) 17 } 18 19 func TestTeamStoreCache(t *testing.T) { 20 fakeUserId := "123" 21 fakeUserTeamIds := []string{"1", "2", "3"} 22 23 t.Run("first call not cached, second cached and returning same data", func(t *testing.T) { 24 mockStore := getMockStore() 25 mockCacheProvider := getMockCacheProvider() 26 cachedStore := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 27 28 gotUserTeamIds, err := cachedStore.Team().GetUserTeamIds(fakeUserId, true) 29 require.Nil(t, err) 30 assert.Equal(t, fakeUserTeamIds, gotUserTeamIds) 31 mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 1) 32 33 gotUserTeamIds, err = cachedStore.Team().GetUserTeamIds(fakeUserId, true) 34 require.Nil(t, err) 35 assert.Equal(t, fakeUserTeamIds, gotUserTeamIds) 36 mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 1) 37 }) 38 39 t.Run("first call not cached, second force not cached", func(t *testing.T) { 40 mockStore := getMockStore() 41 mockCacheProvider := getMockCacheProvider() 42 cachedStore := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 43 44 gotUserTeamIds, err := cachedStore.Team().GetUserTeamIds(fakeUserId, true) 45 require.Nil(t, err) 46 assert.Equal(t, fakeUserTeamIds, gotUserTeamIds) 47 mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 1) 48 49 gotUserTeamIds, err = cachedStore.Team().GetUserTeamIds(fakeUserId, false) 50 require.Nil(t, err) 51 assert.Equal(t, fakeUserTeamIds, gotUserTeamIds) 52 mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 2) 53 }) 54 55 t.Run("first call not cached, invalidate, and then not cached again", func(t *testing.T) { 56 mockStore := getMockStore() 57 mockCacheProvider := getMockCacheProvider() 58 cachedStore := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 59 60 gotUserTeamIds, err := cachedStore.Team().GetUserTeamIds(fakeUserId, true) 61 require.Nil(t, err) 62 assert.Equal(t, fakeUserTeamIds, gotUserTeamIds) 63 mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 1) 64 65 cachedStore.Team().InvalidateAllTeamIdsForUser(fakeUserId) 66 67 gotUserTeamIds, err = cachedStore.Team().GetUserTeamIds(fakeUserId, true) 68 require.Nil(t, err) 69 assert.Equal(t, fakeUserTeamIds, gotUserTeamIds) 70 mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 2) 71 }) 72 73 }