1
0
Fork 0
mirror of https://github.com/anyproto/any-sync.git synced 2025-06-07 21:47:02 +09:00

Add tests

This commit is contained in:
Mikhail Rakhmanov 2025-06-02 11:14:16 +02:00
parent e97d484242
commit ecee52638a
No known key found for this signature in database
GPG key ID: DED12CFEF5B8396B
2 changed files with 81 additions and 1 deletions

View file

@ -928,6 +928,86 @@ func TestObjectTree(t *testing.T) {
}
})
t.Run("test fix incorrect changes added", func(t *testing.T) {
treeCtx := prepareTreeContext(t, aclList)
treeStorage := treeCtx.treeStorage
changeCreator := treeCtx.changeCreator
objTree := treeCtx.objTree
rawChangesFirst := []*treechangeproto.RawTreeChangeWithId{
changeCreator.CreateRoot("0", aclList.Head().Id),
changeCreator.CreateRaw("1", aclList.Head().Id, "0", true, "0"),
}
rawChangesSecond := []*treechangeproto.RawTreeChangeWithId{
changeCreator.CreateRoot("0", aclList.Head().Id),
changeCreator.CreateRaw("2", aclList.Head().Id, "0", true, "0"),
}
payloadFirst := RawChangesPayload{
NewHeads: []string{"1"},
RawChanges: rawChangesFirst,
}
payloadSecond := RawChangesPayload{
NewHeads: []string{"2"},
RawChanges: rawChangesSecond,
}
res, err := objTree.AddRawChanges(context.Background(), payloadFirst)
require.NoError(t, err, "adding changes should be without error")
require.Equal(t, []string{"1"}, res.Heads)
res, err = objTree.AddRawChanges(context.Background(), payloadSecond)
require.NoError(t, err, "adding changes should be without error")
require.Equal(t, []string{"1", "2"}, res.Heads)
for _, ch := range append(rawChangesFirst, rawChangesSecond...) {
raw, err := treeStorage.Get(context.Background(), ch.Id)
assert.NoError(t, err, "storage should have all the changes")
assert.Equal(t, ch.Id, raw.RawTreeChangeWithId().Id, "the changes in the storage should be the same")
assert.Equal(t, ch.RawChange, raw.RawTreeChangeWithId().RawChange, "the changes in the storage should be the same")
}
})
t.Run("test fix incorrect changes added with snapshot path", func(t *testing.T) {
treeCtx := prepareTreeContext(t, aclList)
treeStorage := treeCtx.treeStorage
changeCreator := treeCtx.changeCreator
objTree := treeCtx.objTree
rawChangesFirst := []*treechangeproto.RawTreeChangeWithId{
changeCreator.CreateRoot("0", aclList.Head().Id),
changeCreator.CreateRaw("1", aclList.Head().Id, "0", true, "0"),
}
rawChangesSecond := []*treechangeproto.RawTreeChangeWithId{
changeCreator.CreateRoot("0", aclList.Head().Id),
changeCreator.CreateRaw("2", aclList.Head().Id, "0", true, "0"),
}
payloadFirst := RawChangesPayload{
NewHeads: []string{"1"},
RawChanges: rawChangesFirst,
SnapshotPath: []string{"0", "1"},
}
payloadSecond := RawChangesPayload{
NewHeads: []string{"2"},
RawChanges: rawChangesSecond,
SnapshotPath: []string{"0", "2"},
}
res, err := objTree.AddRawChanges(context.Background(), payloadFirst)
require.NoError(t, err, "adding changes should be without error")
require.Equal(t, []string{"1"}, res.Heads)
res, err = objTree.AddRawChanges(context.Background(), payloadSecond)
require.NoError(t, err, "adding changes should be without error")
require.Equal(t, []string{"1", "2"}, res.Heads)
for _, ch := range append(rawChangesFirst, rawChangesSecond...) {
raw, err := treeStorage.Get(context.Background(), ch.Id)
assert.NoError(t, err, "storage should have all the changes")
assert.Equal(t, ch.Id, raw.RawTreeChangeWithId().Id, "the changes in the storage should be the same")
assert.Equal(t, ch.RawChange, raw.RawTreeChangeWithId().RawChange, "the changes in the storage should be the same")
}
})
t.Run("add with rollback", func(t *testing.T) {
ctx := prepareTreeContext(t, aclList)
changeCreator := ctx.changeCreator

View file

@ -225,7 +225,7 @@ func (tb *treeBuilder) lowestSnapshots(cache map[string]*Change, heads []string,
current = append(current, next...)
next = next[:0]
for _, id := range current {
if ch, ok := cache[id]; ok {
if ch, ok := cache[id]; ok && ch.SnapshotId != "" {
if ch.visited {
continue
}