github.com/mattermosttest/mattermost-server/v5@v5.0.0-20200917143240-9dfa12e121f9/store/localcachelayer/webhook_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/mattermost/mattermost-server/v5/model" 13 "github.com/mattermost/mattermost-server/v5/store/storetest" 14 "github.com/mattermost/mattermost-server/v5/store/storetest/mocks" 15 ) 16 17 func TestWebhookStore(t *testing.T) { 18 StoreTest(t, storetest.TestWebhookStore) 19 } 20 21 func TestWebhookStoreCache(t *testing.T) { 22 fakeWebhook := model.IncomingWebhook{Id: "123"} 23 24 t.Run("first call not cached, second cached and returning same data", func(t *testing.T) { 25 mockStore := getMockStore() 26 mockCacheProvider := getMockCacheProvider() 27 cachedStore := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 28 29 incomingWebhook, err := cachedStore.Webhook().GetIncoming("123", true) 30 require.Nil(t, err) 31 assert.Equal(t, incomingWebhook, &fakeWebhook) 32 mockStore.Webhook().(*mocks.WebhookStore).AssertNumberOfCalls(t, "GetIncoming", 1) 33 34 assert.Equal(t, incomingWebhook, &fakeWebhook) 35 cachedStore.Webhook().GetIncoming("123", true) 36 mockStore.Webhook().(*mocks.WebhookStore).AssertNumberOfCalls(t, "GetIncoming", 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 cachedStore.Webhook().GetIncoming("123", true) 45 mockStore.Webhook().(*mocks.WebhookStore).AssertNumberOfCalls(t, "GetIncoming", 1) 46 cachedStore.Webhook().GetIncoming("123", false) 47 mockStore.Webhook().(*mocks.WebhookStore).AssertNumberOfCalls(t, "GetIncoming", 2) 48 }) 49 50 t.Run("first call not cached, invalidate, 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.Webhook().GetIncoming("123", true) 56 mockStore.Webhook().(*mocks.WebhookStore).AssertNumberOfCalls(t, "GetIncoming", 1) 57 cachedStore.Webhook().InvalidateWebhookCache("123") 58 cachedStore.Webhook().GetIncoming("123", true) 59 mockStore.Webhook().(*mocks.WebhookStore).AssertNumberOfCalls(t, "GetIncoming", 2) 60 }) 61 }