any-sync/client/storage/spacestorage_test.go
2022-11-10 19:44:33 +01:00

109 lines
2.8 KiB
Go

package storage
import (
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/spacesyncproto"
spacestorage "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/storage"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/aclrecordproto"
"github.com/stretchr/testify/require"
"strconv"
"testing"
)
func spaceTestPayload() spacestorage.SpaceStorageCreatePayload {
header := &spacesyncproto.RawSpaceHeaderWithId{
RawHeader: []byte("header"),
Id: "headerId",
}
aclRoot := &aclrecordproto.RawACLRecordWithId{
Payload: []byte("aclRoot"),
Id: "aclRootId",
}
return spacestorage.SpaceStorageCreatePayload{
AclWithId: aclRoot,
SpaceHeaderWithId: header,
}
}
func testSpace(t *testing.T, store spacestorage.SpaceStorage, payload spacestorage.SpaceStorageCreatePayload) {
header, err := store.SpaceHeader()
require.NoError(t, err)
require.Equal(t, payload.SpaceHeaderWithId, header)
aclStorage, err := store.ACLStorage()
require.NoError(t, err)
testList(t, aclStorage, payload.AclWithId, payload.AclWithId.Id)
}
func TestSpaceStorage_Create(t *testing.T) {
fx := newFixture(t)
fx.open(t)
defer fx.stop(t)
payload := spaceTestPayload()
store, err := createSpaceStorage(fx.db, payload)
require.NoError(t, err)
testSpace(t, store, payload)
require.NoError(t, store.Close())
t.Run("create same storage returns error", func(t *testing.T) {
_, err := createSpaceStorage(fx.db, payload)
require.Error(t, err)
})
}
func TestSpaceStorage_NewAndCreateTree(t *testing.T) {
fx := newFixture(t)
fx.open(t)
payload := spaceTestPayload()
store, err := createSpaceStorage(fx.db, payload)
require.NoError(t, err)
require.NoError(t, store.Close())
fx.stop(t)
fx.open(t)
defer fx.stop(t)
store, err = newSpaceStorage(fx.db, payload.SpaceHeaderWithId.Id)
require.NoError(t, err)
testSpace(t, store, payload)
t.Run("create tree and get tree", func(t *testing.T) {
payload := treeTestPayload()
treeStore, err := store.CreateTreeStorage(payload)
require.NoError(t, err)
testTreePayload(t, treeStore, payload)
otherStore, err := store.TreeStorage(payload.RootRawChange.Id)
require.NoError(t, err)
testTreePayload(t, otherStore, payload)
})
}
func TestSpaceStorage_StoredIds(t *testing.T) {
fx := newFixture(t)
fx.open(t)
defer fx.stop(t)
payload := spaceTestPayload()
store, err := createSpaceStorage(fx.db, payload)
require.NoError(t, err)
defer func() {
require.NoError(t, store.Close())
}()
n := 5
var ids []string
for i := 0; i < n; i++ {
treePayload := treeTestPayload()
treePayload.RootRawChange.Id += strconv.Itoa(i)
ids = append(ids, treePayload.RootRawChange.Id)
_, err := store.CreateTreeStorage(treePayload)
require.NoError(t, err)
}
storedIds, err := store.StoredIds()
require.NoError(t, err)
require.Equal(t, ids, storedIds)
}