1
0
mirror of https://github.com/mattermost/focalboard.git synced 2025-02-07 19:30:18 +02:00

Unit tests for store.getSubTree

This commit is contained in:
Chen-I Lim 2020-11-12 10:48:08 -08:00
parent 37fd30413b
commit 257a74954d
3 changed files with 153 additions and 8 deletions

View File

@ -5,10 +5,9 @@
package mockstore
import (
reflect "reflect"
gomock "github.com/golang/mock/gomock"
model "github.com/mattermost/mattermost-octo-tasks/server/model"
reflect "reflect"
)
// MockStore is a mock of Store interface
@ -123,19 +122,34 @@ func (mr *MockStoreMockRecorder) GetParentID(arg0 interface{}) *gomock.Call {
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetParentID", reflect.TypeOf((*MockStore)(nil).GetParentID), arg0)
}
// GetSubTree mocks base method
func (m *MockStore) GetSubTree(arg0 string) ([]model.Block, error) {
// GetSubTree2 mocks base method
func (m *MockStore) GetSubTree2(arg0 string) ([]model.Block, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetSubTree", arg0)
ret := m.ctrl.Call(m, "GetSubTree2", arg0)
ret0, _ := ret[0].([]model.Block)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetSubTree indicates an expected call of GetSubTree
func (mr *MockStoreMockRecorder) GetSubTree(arg0 interface{}) *gomock.Call {
// GetSubTree2 indicates an expected call of GetSubTree2
func (mr *MockStoreMockRecorder) GetSubTree2(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubTree", reflect.TypeOf((*MockStore)(nil).GetSubTree), arg0)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubTree2", reflect.TypeOf((*MockStore)(nil).GetSubTree2), arg0)
}
// GetSubTree3 mocks base method
func (m *MockStore) GetSubTree3(arg0 string) ([]model.Block, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetSubTree3", arg0)
ret0, _ := ret[0].([]model.Block)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetSubTree3 indicates an expected call of GetSubTree3
func (mr *MockStoreMockRecorder) GetSubTree3(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubTree3", reflect.TypeOf((*MockStore)(nil).GetSubTree3), arg0)
}
// GetSystemSettings mocks base method

View File

@ -36,3 +36,109 @@ func TestInsertBlock(t *testing.T) {
require.NoError(t, err)
require.Empty(t, blocks)
}
func TestGetSubTree2(t *testing.T) {
store, tearDown := SetupTests(t)
defer tearDown()
blocks, err := store.GetAllBlocks()
require.NoError(t, err)
require.Empty(t, blocks)
blocksToInsert := []model.Block{
model.Block{
ID: "parent",
},
model.Block{
ID: "child1",
ParentID: "parent",
},
model.Block{
ID: "child2",
ParentID: "parent",
},
model.Block{
ID: "grandchild1",
ParentID: "child1",
},
model.Block{
ID: "grandchild2",
ParentID: "child2",
},
model.Block{
ID: "greatgrandchild1",
ParentID: "grandchild1",
},
}
InsertBlocks(t, store, blocksToInsert)
blocks, err = store.GetSubTree2("parent")
require.NoError(t, err)
require.Len(t, blocks, 3)
require.True(t, ContainsBlockWithID(blocks, "parent"))
require.True(t, ContainsBlockWithID(blocks, "child1"))
require.True(t, ContainsBlockWithID(blocks, "child2"))
// Wait for not colliding the ID+insert_at key
time.Sleep(1 * time.Millisecond)
DeleteBlocks(t, store, blocksToInsert)
blocks, err = store.GetAllBlocks()
require.NoError(t, err)
require.Empty(t, blocks)
}
func TestGetSubTree3(t *testing.T) {
store, tearDown := SetupTests(t)
defer tearDown()
blocks, err := store.GetAllBlocks()
require.NoError(t, err)
require.Empty(t, blocks)
blocksToInsert := []model.Block{
model.Block{
ID: "parent",
},
model.Block{
ID: "child1",
ParentID: "parent",
},
model.Block{
ID: "child2",
ParentID: "parent",
},
model.Block{
ID: "grandchild1",
ParentID: "child1",
},
model.Block{
ID: "grandchild2",
ParentID: "child2",
},
model.Block{
ID: "greatgrandchild1",
ParentID: "grandchild1",
},
}
InsertBlocks(t, store, blocksToInsert)
blocks, err = store.GetSubTree3("parent")
require.NoError(t, err)
require.Len(t, blocks, 5)
require.True(t, ContainsBlockWithID(blocks, "parent"))
require.True(t, ContainsBlockWithID(blocks, "child1"))
require.True(t, ContainsBlockWithID(blocks, "child2"))
require.True(t, ContainsBlockWithID(blocks, "grandchild1"))
require.True(t, ContainsBlockWithID(blocks, "grandchild2"))
// Wait for not colliding the ID+insert_at key
time.Sleep(1 * time.Millisecond)
DeleteBlocks(t, store, blocksToInsert)
blocks, err = store.GetAllBlocks()
require.NoError(t, err)
require.Empty(t, blocks)
}

View File

@ -4,6 +4,7 @@ import (
"os"
"testing"
"github.com/mattermost/mattermost-octo-tasks/server/model"
"github.com/stretchr/testify/require"
)
@ -28,3 +29,27 @@ func SetupTests(t *testing.T) (*SQLStore, func()) {
return store, tearDown
}
func InsertBlocks(t *testing.T, s *SQLStore, blocks []model.Block) {
for _, block := range blocks {
err := s.InsertBlock(block)
require.NoError(t, err)
}
}
func DeleteBlocks(t *testing.T, s *SQLStore, blocks []model.Block) {
for _, block := range blocks {
err := s.DeleteBlock(block.ID)
require.NoError(t, err)
}
}
func ContainsBlockWithID(blocks []model.Block, blockID string) bool {
for _, block := range blocks {
if block.ID == blockID {
return true
}
}
return false
}