diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-11-27 17:23:35 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-27 17:23:35 -0500 |
commit | 6176bcff6977bda71f4fde10a52dde6d7d7ceb9a (patch) | |
tree | b4a4a22879f4b88ffc4fb59f46ca69d441569ddd /store/storetest/plugin_store.go | |
parent | e85ec3830164ffdfbe8fd5696ab99446b38a01ef (diff) | |
download | chat-6176bcff6977bda71f4fde10a52dde6d7d7ceb9a.tar.gz chat-6176bcff6977bda71f4fde10a52dde6d7d7ceb9a.tar.bz2 chat-6176bcff6977bda71f4fde10a52dde6d7d7ceb9a.zip |
PLT-8131 (part2) Add plugin key value store support (#7902)
* Add plugin key value store support
* Add localization strings
* Updates per feedback
Diffstat (limited to 'store/storetest/plugin_store.go')
-rw-r--r-- | store/storetest/plugin_store.go | 69 |
1 files changed, 69 insertions, 0 deletions
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) + } +} |