diff options
Diffstat (limited to 'store/storetest')
-rw-r--r-- | store/storetest/mocks/LayeredStoreDatabaseLayer.go | 16 | ||||
-rw-r--r-- | store/storetest/mocks/PluginStore.go | 62 | ||||
-rw-r--r-- | store/storetest/mocks/SqlStore.go | 30 | ||||
-rw-r--r-- | store/storetest/mocks/Store.go | 16 | ||||
-rw-r--r-- | store/storetest/plugin_store.go | 69 | ||||
-rw-r--r-- | store/storetest/store.go | 3 |
6 files changed, 196 insertions, 0 deletions
diff --git a/store/storetest/mocks/LayeredStoreDatabaseLayer.go b/store/storetest/mocks/LayeredStoreDatabaseLayer.go index 1eb09c343..c3b8bbb60 100644 --- a/store/storetest/mocks/LayeredStoreDatabaseLayer.go +++ b/store/storetest/mocks/LayeredStoreDatabaseLayer.go @@ -221,6 +221,22 @@ func (_m *LayeredStoreDatabaseLayer) OAuth() store.OAuthStore { return r0 } +// Plugin provides a mock function with given fields: +func (_m *LayeredStoreDatabaseLayer) Plugin() store.PluginStore { + ret := _m.Called() + + var r0 store.PluginStore + if rf, ok := ret.Get(0).(func() store.PluginStore); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(store.PluginStore) + } + } + + return r0 +} + // Post provides a mock function with given fields: func (_m *LayeredStoreDatabaseLayer) Post() store.PostStore { ret := _m.Called() diff --git a/store/storetest/mocks/PluginStore.go b/store/storetest/mocks/PluginStore.go new file mode 100644 index 000000000..920b0f63c --- /dev/null +++ b/store/storetest/mocks/PluginStore.go @@ -0,0 +1,62 @@ +// Code generated by mockery v1.0.0 + +// Regenerate this file using `make store-mocks`. + +package mocks + +import mock "github.com/stretchr/testify/mock" +import model "github.com/mattermost/mattermost-server/model" +import store "github.com/mattermost/mattermost-server/store" + +// PluginStore is an autogenerated mock type for the PluginStore type +type PluginStore struct { + mock.Mock +} + +// Delete provides a mock function with given fields: pluginId, key +func (_m *PluginStore) Delete(pluginId string, key string) store.StoreChannel { + ret := _m.Called(pluginId, key) + + var r0 store.StoreChannel + if rf, ok := ret.Get(0).(func(string, string) store.StoreChannel); ok { + r0 = rf(pluginId, key) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(store.StoreChannel) + } + } + + return r0 +} + +// Get provides a mock function with given fields: pluginId, key +func (_m *PluginStore) Get(pluginId string, key string) store.StoreChannel { + ret := _m.Called(pluginId, key) + + var r0 store.StoreChannel + if rf, ok := ret.Get(0).(func(string, string) store.StoreChannel); ok { + r0 = rf(pluginId, key) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(store.StoreChannel) + } + } + + return r0 +} + +// SaveOrUpdate provides a mock function with given fields: keyVal +func (_m *PluginStore) SaveOrUpdate(keyVal *model.PluginKeyValue) store.StoreChannel { + ret := _m.Called(keyVal) + + var r0 store.StoreChannel + if rf, ok := ret.Get(0).(func(*model.PluginKeyValue) store.StoreChannel); ok { + r0 = rf(keyVal) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(store.StoreChannel) + } + } + + return r0 +} diff --git a/store/storetest/mocks/SqlStore.go b/store/storetest/mocks/SqlStore.go index eda8cb39e..b9b962101 100644 --- a/store/storetest/mocks/SqlStore.go +++ b/store/storetest/mocks/SqlStore.go @@ -143,6 +143,20 @@ func (_m *SqlStore) CreateColumnIfNotExists(tableName string, columnName string, return r0 } +// CreateCompositeIndexIfNotExists provides a mock function with given fields: indexName, tableName, columnNames +func (_m *SqlStore) CreateCompositeIndexIfNotExists(indexName string, tableName string, columnNames []string) bool { + ret := _m.Called(indexName, tableName, columnNames) + + var r0 bool + if rf, ok := ret.Get(0).(func(string, string, []string) bool); ok { + r0 = rf(indexName, tableName, columnNames) + } else { + r0 = ret.Get(0).(bool) + } + + return r0 +} + // CreateFullTextIndexIfNotExists provides a mock function with given fields: indexName, tableName, columnName func (_m *SqlStore) CreateFullTextIndexIfNotExists(indexName string, tableName string, columnName string) bool { ret := _m.Called(indexName, tableName, columnName) @@ -404,6 +418,22 @@ func (_m *SqlStore) OAuth() store.OAuthStore { return r0 } +// Plugin provides a mock function with given fields: +func (_m *SqlStore) Plugin() store.PluginStore { + ret := _m.Called() + + var r0 store.PluginStore + if rf, ok := ret.Get(0).(func() store.PluginStore); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(store.PluginStore) + } + } + + return r0 +} + // Post provides a mock function with given fields: func (_m *SqlStore) Post() store.PostStore { ret := _m.Called() diff --git a/store/storetest/mocks/Store.go b/store/storetest/mocks/Store.go index 166b5b98a..85ed10d35 100644 --- a/store/storetest/mocks/Store.go +++ b/store/storetest/mocks/Store.go @@ -203,6 +203,22 @@ func (_m *Store) OAuth() store.OAuthStore { return r0 } +// Plugin provides a mock function with given fields: +func (_m *Store) Plugin() store.PluginStore { + ret := _m.Called() + + var r0 store.PluginStore + if rf, ok := ret.Get(0).(func() store.PluginStore); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(store.PluginStore) + } + } + + return r0 +} + // Post provides a mock function with given fields: func (_m *Store) Post() store.PostStore { ret := _m.Called() diff --git a/store/storetest/plugin_store.go b/store/storetest/plugin_store.go new file mode 100644 index 000000000..3d7d0ec05 --- /dev/null +++ b/store/storetest/plugin_store.go @@ -0,0 +1,69 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package storetest + +import ( + "testing" + + "github.com/mattermost/mattermost-server/model" + "github.com/mattermost/mattermost-server/store" + "github.com/stretchr/testify/assert" +) + +func TestPluginStore(t *testing.T, ss store.Store) { + t.Run("PluginSaveGet", func(t *testing.T) { testPluginSaveGet(t, ss) }) + t.Run("PluginDelete", func(t *testing.T) { testPluginDelete(t, ss) }) +} + +func testPluginSaveGet(t *testing.T, ss store.Store) { + kv := &model.PluginKeyValue{ + PluginId: model.NewId(), + Key: model.NewId(), + Value: []byte(model.NewId()), + } + + if result := <-ss.Plugin().SaveOrUpdate(kv); result.Err != nil { + t.Fatal(result.Err) + } + + defer func() { + <-ss.Plugin().Delete(kv.PluginId, kv.Key) + }() + + if result := <-ss.Plugin().Get(kv.PluginId, kv.Key); result.Err != nil { + t.Fatal(result.Err) + } else { + received := result.Data.(*model.PluginKeyValue) + assert.Equal(t, kv.PluginId, received.PluginId) + assert.Equal(t, kv.Key, received.Key) + assert.Equal(t, kv.Value, received.Value) + } + + // Try inserting when already exists + kv.Value = []byte(model.NewId()) + if result := <-ss.Plugin().SaveOrUpdate(kv); result.Err != nil { + t.Fatal(result.Err) + } + + if result := <-ss.Plugin().Get(kv.PluginId, kv.Key); result.Err != nil { + t.Fatal(result.Err) + } else { + received := result.Data.(*model.PluginKeyValue) + assert.Equal(t, kv.PluginId, received.PluginId) + assert.Equal(t, kv.Key, received.Key) + assert.Equal(t, kv.Value, received.Value) + } +} + +func testPluginDelete(t *testing.T, ss store.Store) { + kv := store.Must(ss.Plugin().SaveOrUpdate(&model.PluginKeyValue{ + PluginId: model.NewId(), + Key: model.NewId(), + Value: []byte(model.NewId()), + })).(*model.PluginKeyValue) + + if result := <-ss.Plugin().Delete(kv.PluginId, kv.Key); result.Err != nil { + t.Fatal(result.Err) + } +} diff --git a/store/storetest/store.go b/store/storetest/store.go index 7201df6ec..55545decb 100644 --- a/store/storetest/store.go +++ b/store/storetest/store.go @@ -41,6 +41,7 @@ type Store struct { ReactionStore mocks.ReactionStore JobStore mocks.JobStore UserAccessTokenStore mocks.UserAccessTokenStore + PluginStore mocks.PluginStore } func (s *Store) Team() store.TeamStore { return &s.TeamStore } @@ -65,6 +66,7 @@ func (s *Store) FileInfo() store.FileInfoStore { return &s.FileI func (s *Store) Reaction() store.ReactionStore { return &s.ReactionStore } func (s *Store) Job() store.JobStore { return &s.JobStore } func (s *Store) UserAccessToken() store.UserAccessTokenStore { return &s.UserAccessTokenStore } +func (s *Store) Plugin() store.PluginStore { return &s.PluginStore } func (s *Store) MarkSystemRanUnitTests() { /* do nothing */ } func (s *Store) Close() { /* do nothing */ } func (s *Store) DropAllTables() { /* do nothing */ } @@ -96,5 +98,6 @@ func (s *Store) AssertExpectations(t mock.TestingT) bool { &s.ReactionStore, &s.JobStore, &s.UserAccessTokenStore, + &s.PluginStore, ) } |