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  }