github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/store/localcachelayer/scheme_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/model" 13 "github.com/masterhung0112/hk_server/v5/store/storetest/mocks" 14 ) 15 16 // func TestSchemeStore(t *testing.T) { 17 // StoreTest(t, storetest.TestSchemeStore) 18 // } 19 20 func TestSchemeStoreCache(t *testing.T) { 21 fakeScheme := model.Scheme{Id: "123", Name: "scheme-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, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 27 require.NoError(t, err) 28 29 scheme, err := cachedStore.Scheme().Get("123") 30 require.NoError(t, err) 31 assert.Equal(t, scheme, &fakeScheme) 32 mockStore.Scheme().(*mocks.SchemeStore).AssertNumberOfCalls(t, "Get", 1) 33 require.NoError(t, err) 34 assert.Equal(t, scheme, &fakeScheme) 35 cachedStore.Scheme().Get("123") 36 mockStore.Scheme().(*mocks.SchemeStore).AssertNumberOfCalls(t, "Get", 1) 37 }) 38 39 t.Run("first call not cached, save, and then not cached again", func(t *testing.T) { 40 mockStore := getMockStore() 41 mockCacheProvider := getMockCacheProvider() 42 cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 43 require.NoError(t, err) 44 45 cachedStore.Scheme().Get("123") 46 mockStore.Scheme().(*mocks.SchemeStore).AssertNumberOfCalls(t, "Get", 1) 47 cachedStore.Scheme().Save(&fakeScheme) 48 cachedStore.Scheme().Get("123") 49 mockStore.Scheme().(*mocks.SchemeStore).AssertNumberOfCalls(t, "Get", 2) 50 }) 51 52 t.Run("first call not cached, delete, and then not cached again", func(t *testing.T) { 53 mockStore := getMockStore() 54 mockCacheProvider := getMockCacheProvider() 55 cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 56 require.NoError(t, err) 57 58 cachedStore.Scheme().Get("123") 59 mockStore.Scheme().(*mocks.SchemeStore).AssertNumberOfCalls(t, "Get", 1) 60 cachedStore.Scheme().Delete("123") 61 cachedStore.Scheme().Get("123") 62 mockStore.Scheme().(*mocks.SchemeStore).AssertNumberOfCalls(t, "Get", 2) 63 }) 64 65 t.Run("first call not cached, permanent delete all, and then not cached again", func(t *testing.T) { 66 mockStore := getMockStore() 67 mockCacheProvider := getMockCacheProvider() 68 cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 69 require.NoError(t, err) 70 71 cachedStore.Scheme().Get("123") 72 mockStore.Scheme().(*mocks.SchemeStore).AssertNumberOfCalls(t, "Get", 1) 73 cachedStore.Scheme().PermanentDeleteAll() 74 cachedStore.Scheme().Get("123") 75 mockStore.Scheme().(*mocks.SchemeStore).AssertNumberOfCalls(t, "Get", 2) 76 }) 77 }