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:
parent
37fd30413b
commit
257a74954d
@ -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
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user