github.com/haalcala/mattermost-server-change-repo@v0.0.0-20210713015153-16753fbeee5f/store/localcachelayer/terms_of_service_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 TestTermsOfServiceStore(t *testing.T) { 18 StoreTest(t, storetest.TestTermsOfServiceStore) 19 } 20 21 func TestTermsOfServiceStoreTermsOfServiceCache(t *testing.T) { 22 23 fakeTermsOfService := model.TermsOfService{Id: "123", CreateAt: 11111, UserId: "321", Text: "Terms of service test"} 24 25 t.Run("first call by latest not cached, second cached and returning same data", func(t *testing.T) { 26 mockStore := getMockStore() 27 mockCacheProvider := getMockCacheProvider() 28 cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 29 require.NoError(t, err) 30 31 termsOfService, err := cachedStore.TermsOfService().GetLatest(true) 32 require.NoError(t, err) 33 assert.Equal(t, termsOfService, &fakeTermsOfService) 34 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "GetLatest", 1) 35 termsOfService, err = cachedStore.TermsOfService().GetLatest(true) 36 require.NoError(t, err) 37 assert.Equal(t, termsOfService, &fakeTermsOfService) 38 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "GetLatest", 1) 39 }) 40 41 t.Run("first call by id not cached, second cached and returning same data", func(t *testing.T) { 42 mockStore := getMockStore() 43 mockCacheProvider := getMockCacheProvider() 44 cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 45 require.NoError(t, err) 46 47 termsOfService, err := cachedStore.TermsOfService().Get("123", true) 48 require.NoError(t, err) 49 assert.Equal(t, termsOfService, &fakeTermsOfService) 50 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "Get", 1) 51 termsOfService, err = cachedStore.TermsOfService().Get("123", true) 52 require.NoError(t, err) 53 assert.Equal(t, termsOfService, &fakeTermsOfService) 54 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "Get", 1) 55 }) 56 57 t.Run("first call by id not cached, second force no cached", 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 cachedStore.TermsOfService().Get("123", true) 64 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "Get", 1) 65 cachedStore.TermsOfService().Get("123", false) 66 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "Get", 2) 67 }) 68 69 t.Run("first call latest not cached, second force no cached", func(t *testing.T) { 70 mockStore := getMockStore() 71 mockCacheProvider := getMockCacheProvider() 72 cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 73 require.NoError(t, err) 74 75 cachedStore.TermsOfService().GetLatest(true) 76 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "GetLatest", 1) 77 cachedStore.TermsOfService().GetLatest(false) 78 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "GetLatest", 2) 79 }) 80 81 t.Run("first call by id force no cached, second not cached, third cached", func(t *testing.T) { 82 mockStore := getMockStore() 83 mockCacheProvider := getMockCacheProvider() 84 cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 85 require.NoError(t, err) 86 87 cachedStore.TermsOfService().Get("123", false) 88 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "Get", 1) 89 cachedStore.TermsOfService().Get("123", true) 90 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "Get", 2) 91 cachedStore.TermsOfService().Get("123", true) 92 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "Get", 2) 93 }) 94 95 t.Run("first call latest force no cached, second not cached, third cached", func(t *testing.T) { 96 mockStore := getMockStore() 97 mockCacheProvider := getMockCacheProvider() 98 cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 99 require.NoError(t, err) 100 101 cachedStore.TermsOfService().GetLatest(false) 102 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "GetLatest", 1) 103 cachedStore.TermsOfService().GetLatest(true) 104 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "GetLatest", 2) 105 cachedStore.TermsOfService().GetLatest(true) 106 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "GetLatest", 2) 107 }) 108 109 t.Run("first call latest, second call by id cached", func(t *testing.T) { 110 mockStore := getMockStore() 111 mockCacheProvider := getMockCacheProvider() 112 cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 113 require.NoError(t, err) 114 115 cachedStore.TermsOfService().GetLatest(true) 116 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "GetLatest", 1) 117 cachedStore.TermsOfService().Get("123", true) 118 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "Get", 0) 119 }) 120 121 t.Run("first call by id not cached, save, and then not cached again", func(t *testing.T) { 122 mockStore := getMockStore() 123 mockCacheProvider := getMockCacheProvider() 124 cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 125 require.NoError(t, err) 126 127 cachedStore.TermsOfService().Get("123", false) 128 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "Get", 1) 129 cachedStore.TermsOfService().Save(&fakeTermsOfService) 130 cachedStore.TermsOfService().Get("123", false) 131 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "Get", 2) 132 }) 133 134 t.Run("first get latest not cached, save new, then get latest, returning different data", func(t *testing.T) { 135 mockStore := getMockStore() 136 mockCacheProvider := getMockCacheProvider() 137 cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) 138 require.NoError(t, err) 139 140 cachedStore.TermsOfService().GetLatest(true) 141 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "GetLatest", 1) 142 cachedStore.TermsOfService().Save(&fakeTermsOfService) 143 cachedStore.TermsOfService().GetLatest(true) 144 mockStore.TermsOfService().(*mocks.TermsOfServiceStore).AssertNumberOfCalls(t, "GetLatest", 2) 145 }) 146 }