Merge branch 'main' of github.com:mattermost/mattermost-octo-tasks into main
This commit is contained in:
commit
0ae440c7de
3 changed files with 208 additions and 16 deletions
|
@ -33,4 +33,5 @@ func SetupTests(t *testing.T) (store.Store, func()) {
|
|||
|
||||
func TestBlocksStore(t *testing.T) {
|
||||
t.Run("BlocksStore", func(t *testing.T) { storetests.StoreTestBlocksStore(t, SetupTests) })
|
||||
t.Run("SharingStore", func(t *testing.T) { storetests.StoreTestSharingStore(t, SetupTests) })
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package storetests
|
|||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/mattermost/focalboard/server/model"
|
||||
"github.com/mattermost/focalboard/server/services/store"
|
||||
|
@ -11,25 +12,37 @@ import (
|
|||
func StoreTestBlocksStore(t *testing.T, setup func(t *testing.T) (store.Store, func())) {
|
||||
t.Run("InsertBlock", func(t *testing.T) {
|
||||
store, tearDown := setup(t)
|
||||
testInsertBlock(t, store, tearDown)
|
||||
defer tearDown()
|
||||
testInsertBlock(t, store)
|
||||
})
|
||||
t.Run("DeleteBlock", func(t *testing.T) {
|
||||
store, tearDown := setup(t)
|
||||
defer tearDown()
|
||||
testDeleteBlock(t, store)
|
||||
})
|
||||
t.Run("GetSubTree2", func(t *testing.T) {
|
||||
store, tearDown := setup(t)
|
||||
testGetSubTree2(t, store, tearDown)
|
||||
defer tearDown()
|
||||
testGetSubTree2(t, store)
|
||||
})
|
||||
t.Run("GetSubTree3", func(t *testing.T) {
|
||||
store, tearDown := setup(t)
|
||||
testGetSubTree3(t, store, tearDown)
|
||||
defer tearDown()
|
||||
testGetSubTree3(t, store)
|
||||
})
|
||||
t.Run("GetParentID", func(t *testing.T) {
|
||||
store, tearDown := setup(t)
|
||||
defer tearDown()
|
||||
testGetParentID(t, store)
|
||||
})
|
||||
t.Run("GetRootID", func(t *testing.T) {
|
||||
store, tearDown := setup(t)
|
||||
testGetRootID(t, store, tearDown)
|
||||
defer tearDown()
|
||||
testGetRootID(t, store)
|
||||
})
|
||||
}
|
||||
|
||||
func testInsertBlock(t *testing.T, store store.Store, tearDown func()) {
|
||||
defer tearDown()
|
||||
|
||||
func testInsertBlock(t *testing.T, store store.Store) {
|
||||
userID := "user-id"
|
||||
|
||||
blocks, err := store.GetAllBlocks()
|
||||
|
@ -83,9 +96,7 @@ func testInsertBlock(t *testing.T, store store.Store, tearDown func()) {
|
|||
})
|
||||
}
|
||||
|
||||
func testGetSubTree2(t *testing.T, store store.Store, tearDown func()) {
|
||||
defer tearDown()
|
||||
|
||||
func testGetSubTree2(t *testing.T, store store.Store) {
|
||||
userID := "user-id"
|
||||
|
||||
blocks, err := store.GetAllBlocks()
|
||||
|
@ -160,9 +171,7 @@ func testGetSubTree2(t *testing.T, store store.Store, tearDown func()) {
|
|||
})
|
||||
}
|
||||
|
||||
func testGetSubTree3(t *testing.T, store store.Store, tearDown func()) {
|
||||
defer tearDown()
|
||||
|
||||
func testGetSubTree3(t *testing.T, store store.Store) {
|
||||
userID := "user-id"
|
||||
|
||||
blocks, err := store.GetAllBlocks()
|
||||
|
@ -240,9 +249,7 @@ func testGetSubTree3(t *testing.T, store store.Store, tearDown func()) {
|
|||
})
|
||||
}
|
||||
|
||||
func testGetRootID(t *testing.T, store store.Store, tearDown func()) {
|
||||
defer tearDown()
|
||||
|
||||
func testGetRootID(t *testing.T, store store.Store) {
|
||||
userID := "user-id"
|
||||
|
||||
blocks, err := store.GetAllBlocks()
|
||||
|
@ -310,3 +317,128 @@ func testGetRootID(t *testing.T, store store.Store, tearDown func()) {
|
|||
require.Error(t, err)
|
||||
})
|
||||
}
|
||||
|
||||
func testGetParentID(t *testing.T, store store.Store) {
|
||||
userID := "user-id"
|
||||
|
||||
blocks, err := store.GetAllBlocks()
|
||||
require.NoError(t, err)
|
||||
initialCount := len(blocks)
|
||||
|
||||
blocksToInsert := []model.Block{
|
||||
{
|
||||
ID: "parent",
|
||||
RootID: "parent",
|
||||
ModifiedBy: userID,
|
||||
},
|
||||
{
|
||||
ID: "child1",
|
||||
RootID: "parent",
|
||||
ParentID: "parent",
|
||||
ModifiedBy: userID,
|
||||
},
|
||||
{
|
||||
ID: "child2",
|
||||
RootID: "parent",
|
||||
ParentID: "parent",
|
||||
ModifiedBy: userID,
|
||||
},
|
||||
{
|
||||
ID: "grandchild1",
|
||||
RootID: "parent",
|
||||
ParentID: "child1",
|
||||
ModifiedBy: userID,
|
||||
},
|
||||
{
|
||||
ID: "grandchild2",
|
||||
RootID: "parent",
|
||||
ParentID: "child2",
|
||||
ModifiedBy: userID,
|
||||
},
|
||||
{
|
||||
ID: "greatgrandchild1",
|
||||
RootID: "parent",
|
||||
ParentID: "grandchild1",
|
||||
ModifiedBy: userID,
|
||||
},
|
||||
}
|
||||
|
||||
InsertBlocks(t, store, blocksToInsert)
|
||||
|
||||
blocks, err = store.GetAllBlocks()
|
||||
require.NoError(t, err)
|
||||
require.Len(t, blocks, initialCount+6)
|
||||
|
||||
t.Run("from root id", func(t *testing.T) {
|
||||
parentID, err := store.GetParentID("parent")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "", parentID)
|
||||
})
|
||||
|
||||
t.Run("from child id", func(t *testing.T) {
|
||||
parentID, err := store.GetParentID("grandchild1")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "child1", parentID)
|
||||
})
|
||||
|
||||
t.Run("from not existing id", func(t *testing.T) {
|
||||
_, err := store.GetParentID("not-exists")
|
||||
require.Error(t, err)
|
||||
})
|
||||
}
|
||||
|
||||
func testDeleteBlock(t *testing.T, store store.Store) {
|
||||
userID := "user-id"
|
||||
|
||||
blocks, err := store.GetAllBlocks()
|
||||
require.NoError(t, err)
|
||||
initialCount := len(blocks)
|
||||
|
||||
blocksToInsert := []model.Block{
|
||||
{
|
||||
ID: "block1",
|
||||
RootID: "block1",
|
||||
ModifiedBy: userID,
|
||||
},
|
||||
{
|
||||
ID: "block2",
|
||||
RootID: "block2",
|
||||
ModifiedBy: userID,
|
||||
},
|
||||
{
|
||||
ID: "block3",
|
||||
RootID: "block3",
|
||||
ModifiedBy: userID,
|
||||
},
|
||||
}
|
||||
InsertBlocks(t, store, blocksToInsert)
|
||||
|
||||
blocks, err = store.GetAllBlocks()
|
||||
require.NoError(t, err)
|
||||
require.Len(t, blocks, initialCount+3)
|
||||
|
||||
t.Run("exiting id", func(t *testing.T) {
|
||||
// Wait for not colliding the ID+insert_at key
|
||||
time.Sleep(1 * time.Millisecond)
|
||||
err := store.DeleteBlock("block1", userID)
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("exiting id multiple times", func(t *testing.T) {
|
||||
// Wait for not colliding the ID+insert_at key
|
||||
time.Sleep(1 * time.Millisecond)
|
||||
err := store.DeleteBlock("block1", userID)
|
||||
require.NoError(t, err)
|
||||
// Wait for not colliding the ID+insert_at key
|
||||
time.Sleep(1 * time.Millisecond)
|
||||
err = store.DeleteBlock("block1", userID)
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("from not existing id", func(t *testing.T) {
|
||||
// Wait for not colliding the ID+insert_at key
|
||||
time.Sleep(1 * time.Millisecond)
|
||||
err := store.DeleteBlock("not-exists", userID)
|
||||
require.NoError(t, err)
|
||||
})
|
||||
}
|
||||
|
|
59
server/services/store/storetests/sharing.go
Normal file
59
server/services/store/storetests/sharing.go
Normal file
|
@ -0,0 +1,59 @@
|
|||
package storetests
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/mattermost/focalboard/server/model"
|
||||
"github.com/mattermost/focalboard/server/services/store"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func StoreTestSharingStore(t *testing.T, setup func(t *testing.T) (store.Store, func())) {
|
||||
t.Run("UpsertSharingAndGetSharing", func(t *testing.T) {
|
||||
store, tearDown := setup(t)
|
||||
defer tearDown()
|
||||
testUpsertSharingAndGetSharing(t, store)
|
||||
})
|
||||
}
|
||||
|
||||
func testUpsertSharingAndGetSharing(t *testing.T, store store.Store) {
|
||||
t.Run("Insert first sharing and get it", func(t *testing.T) {
|
||||
sharing := model.Sharing{
|
||||
ID: "sharing-id",
|
||||
Enabled: true,
|
||||
Token: "token",
|
||||
ModifiedBy: "user-id",
|
||||
}
|
||||
|
||||
err := store.UpsertSharing(sharing)
|
||||
require.NoError(t, err)
|
||||
newSharing, err := store.GetSharing("sharing-id")
|
||||
require.NoError(t, err)
|
||||
newSharing.UpdateAt = 0
|
||||
require.Equal(t, sharing, *newSharing)
|
||||
})
|
||||
t.Run("Upsert the inserted sharing and get it", func(t *testing.T) {
|
||||
sharing := model.Sharing{
|
||||
ID: "sharing-id",
|
||||
Enabled: true,
|
||||
Token: "token2",
|
||||
ModifiedBy: "user-id2",
|
||||
}
|
||||
|
||||
newSharing, err := store.GetSharing("sharing-id")
|
||||
require.NoError(t, err)
|
||||
newSharing.UpdateAt = 0
|
||||
require.NotEqual(t, sharing, *newSharing)
|
||||
|
||||
err = store.UpsertSharing(sharing)
|
||||
require.NoError(t, err)
|
||||
newSharing, err = store.GetSharing("sharing-id")
|
||||
require.NoError(t, err)
|
||||
newSharing.UpdateAt = 0
|
||||
require.Equal(t, sharing, *newSharing)
|
||||
})
|
||||
t.Run("Get not existing sharing", func(t *testing.T) {
|
||||
_, err := store.GetSharing("not-existing")
|
||||
require.Error(t, err)
|
||||
})
|
||||
}
|
Loading…
Reference in a new issue