github.com/mattermosttest/mattermost-server/v5@v5.0.0-20200917143240-9dfa12e121f9/store/localcachelayer/role_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/model" 10 "github.com/mattermost/mattermost-server/v5/store/storetest" 11 "github.com/mattermost/mattermost-server/v5/store/storetest/mocks" 12 "github.com/stretchr/testify/assert" 13 "github.com/stretchr/testify/require" 14 ) 15 16 func TestRoleStore(t *testing.T) { 17 StoreTestWithSqlSupplier(t, storetest.TestRoleStore) 18 } 19 20 func TestRoleStoreCache(t *testing.T) { 21 fakeRole := model.Role{Id: "123", Name: "role-name"} 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 role, err := cachedStore.Role().GetByName("role-name") 29 require.Nil(t, err) 30 assert.Equal(t, role, &fakeRole) 31 mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 1) 32 require.Nil(t, err) 33 assert.Equal(t, role, &fakeRole) 34 cachedStore.Role().GetByName("role-name") 35 mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 1) 36 }) 37 38 t.Run("first call not cached, save, and then not cached again", func(t *testing.T) { 39 mockStore := getMockStore() 40 mockCacheProvider := getMockCacheProvider() 41 cachedStore := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 42 43 cachedStore.Role().GetByName("role-name") 44 mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 1) 45 cachedStore.Role().Save(&fakeRole) 46 cachedStore.Role().GetByName("role-name") 47 mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 2) 48 }) 49 50 t.Run("first call not cached, delete, and then not cached again", func(t *testing.T) { 51 mockStore := getMockStore() 52 mockCacheProvider := getMockCacheProvider() 53 cachedStore := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 54 55 cachedStore.Role().GetByName("role-name") 56 mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 1) 57 cachedStore.Role().Delete("123") 58 cachedStore.Role().GetByName("role-name") 59 mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 2) 60 }) 61 62 t.Run("first call not cached, permanent delete all, and then not cached again", func(t *testing.T) { 63 mockStore := getMockStore() 64 mockCacheProvider := getMockCacheProvider() 65 cachedStore := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 66 67 cachedStore.Role().GetByName("role-name") 68 mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 1) 69 cachedStore.Role().PermanentDeleteAll() 70 cachedStore.Role().GetByName("role-name") 71 mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 2) 72 }) 73 }