From 02b326cc9025421d0e981137fdd5bef34c2fcd7f Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Wed, 28 Jun 2023 21:34:50 +0200 Subject: [PATCH] Add lastIteratedId when setting merged heads --- .../object/tree/objecttree/objecttree_test.go | 7 +++++-- commonspace/object/tree/objecttree/tree.go | 1 + commonspace/object/tree/objecttree/tree_test.go | 15 ++++++++++++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/commonspace/object/tree/objecttree/objecttree_test.go b/commonspace/object/tree/objecttree/objecttree_test.go index 0dd255f8..1ac1a844 100644 --- a/commonspace/object/tree/objecttree/objecttree_test.go +++ b/commonspace/object/tree/objecttree/objecttree_test.go @@ -3,6 +3,9 @@ package objecttree import ( "context" "fmt" + "testing" + "time" + "github.com/anyproto/any-sync/commonspace/object/accountdata" "github.com/anyproto/any-sync/commonspace/object/acl/list" "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" @@ -10,8 +13,6 @@ import ( "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "testing" - "time" ) type testTreeContext struct { @@ -123,6 +124,7 @@ func TestObjectTree(t *testing.T) { require.NoError(t, err) require.GreaterOrEqual(t, start.Unix(), ch.Timestamp) require.LessOrEqual(t, end.Unix(), ch.Timestamp) + require.Equal(t, res.Added[0].Id, oTree.(*objectTree).tree.lastIteratedHeadId) }) t.Run("timestamp is set correctly", func(t *testing.T) { someTs := time.Now().Add(time.Hour).Unix() @@ -139,6 +141,7 @@ func TestObjectTree(t *testing.T) { ch, err := oTree.(*objectTree).changeBuilder.Unmarshall(res.Added[0], true) require.NoError(t, err) require.Equal(t, ch.Timestamp, someTs) + require.Equal(t, res.Added[0].Id, oTree.(*objectTree).tree.lastIteratedHeadId) }) }) diff --git a/commonspace/object/tree/objecttree/tree.go b/commonspace/object/tree/objecttree/tree.go index 51a3b444..1a070e4c 100644 --- a/commonspace/object/tree/objecttree/tree.go +++ b/commonspace/object/tree/objecttree/tree.go @@ -82,6 +82,7 @@ func (t *Tree) AddMergedHead(c *Change) error { } } t.headIds = []string{c.Id} + t.lastIteratedHeadId = c.Id return nil } diff --git a/commonspace/object/tree/objecttree/tree_test.go b/commonspace/object/tree/objecttree/tree_test.go index 4bda3527..3fe0649c 100644 --- a/commonspace/object/tree/objecttree/tree_test.go +++ b/commonspace/object/tree/objecttree/tree_test.go @@ -2,10 +2,12 @@ package objecttree import ( "fmt" - "github.com/stretchr/testify/assert" "math/rand" "testing" "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func newChange(id string, snapshotId string, prevIds ...string) *Change { @@ -26,6 +28,17 @@ func newSnapshot(id, snapshotId string, prevIds ...string) *Change { } } +func TestTree_AddMergedHead(t *testing.T) { + tr := new(Tree) + _, _ = tr.Add( + newSnapshot("root", ""), + newChange("one", "root", "root"), + ) + require.Equal(t, tr.lastIteratedHeadId, "one") + tr.AddMergedHead(newChange("two", "root", "one")) + require.Equal(t, tr.lastIteratedHeadId, "two") +} + func TestTree_Add(t *testing.T) { t.Run("add first el", func(t *testing.T) { tr := new(Tree)