github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/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/masterhung0112/hk_server/v5/store/storetest/mocks" 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, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 27 require.NoError(t, err) 28 29 gotUserTeamIds, err := cachedStore.Team().GetUserTeamIds(fakeUserId, true) 30 require.NoError(t, err) 31 assert.Equal(t, fakeUserTeamIds, gotUserTeamIds) 32 mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 1) 33 34 gotUserTeamIds, err = cachedStore.Team().GetUserTeamIds(fakeUserId, true) 35 require.NoError(t, err) 36 assert.Equal(t, fakeUserTeamIds, gotUserTeamIds) 37 mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 1) 38 }) 39 40 t.Run("first call not cached, second force not cached", func(t *testing.T) { 41 mockStore := getMockStore() 42 mockCacheProvider := getMockCacheProvider() 43 cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 44 require.NoError(t, err) 45 46 gotUserTeamIds, err := cachedStore.Team().GetUserTeamIds(fakeUserId, true) 47 require.NoError(t, err) 48 assert.Equal(t, fakeUserTeamIds, gotUserTeamIds) 49 mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 1) 50 51 gotUserTeamIds, err = cachedStore.Team().GetUserTeamIds(fakeUserId, false) 52 require.NoError(t, err) 53 assert.Equal(t, fakeUserTeamIds, gotUserTeamIds) 54 mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 2) 55 }) 56 57 t.Run("first call not cached, invalidate, and then not cached again", func(t *testing.T) { 58 mockStore := getMockStore() 59 mockCacheProvider := getMockCacheProvider() 60 cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 61 require.NoError(t, err) 62 63 gotUserTeamIds, err := cachedStore.Team().GetUserTeamIds(fakeUserId, true) 64 require.NoError(t, err) 65 assert.Equal(t, fakeUserTeamIds, gotUserTeamIds) 66 mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 1) 67 68 cachedStore.Team().InvalidateAllTeamIdsForUser(fakeUserId) 69 70 gotUserTeamIds, err = cachedStore.Team().GetUserTeamIds(fakeUserId, true) 71 require.NoError(t, err) 72 assert.Equal(t, fakeUserTeamIds, gotUserTeamIds) 73 mockStore.Team().(*mocks.TeamStore).AssertNumberOfCalls(t, "GetUserTeamIds", 2) 74 }) 75 76 }