From d862575d80a859dd4ce42fb10a6dbb49828544f1 Mon Sep 17 00:00:00 2001 From: Michael Muré Date: Sun, 14 Apr 2019 14:12:44 +0200 Subject: bug: fix EditCommentOperation targeting the wrong comment fix #126 --- bug/op_edit_comment.go | 2 +- bug/op_edit_comment_test.go | 44 +++++++++++++++++++++++++++++++++++--------- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/bug/op_edit_comment.go b/bug/op_edit_comment.go index cf5c2d51..49b6a1af 100644 --- a/bug/op_edit_comment.go +++ b/bug/op_edit_comment.go @@ -48,7 +48,7 @@ func (op *EditCommentOperation) Apply(snapshot *Snapshot) { // Track the index in the []Comment switch item.(type) { - case *CreateTimelineItem, *CommentTimelineItem: + case *CreateTimelineItem, *AddCommentTimelineItem: commentIndex++ } } diff --git a/bug/op_edit_comment_test.go b/bug/op_edit_comment_test.go index 72f8a168..ab0f2d21 100644 --- a/bug/op_edit_comment_test.go +++ b/bug/op_edit_comment_test.go @@ -5,9 +5,10 @@ import ( "testing" "time" - "github.com/MichaelMure/git-bug/identity" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + "github.com/MichaelMure/git-bug/identity" ) func TestEdit(t *testing.T) { @@ -22,29 +23,54 @@ func TestEdit(t *testing.T) { hash1, err := create.Hash() require.NoError(t, err) - comment := NewAddCommentOp(rene, unix, "comment", nil) - comment.Apply(&snapshot) + comment1 := NewAddCommentOp(rene, unix, "comment 1", nil) + comment1.Apply(&snapshot) + + hash2, err := comment1.Hash() + require.NoError(t, err) + + // add another unrelated op in between + setTitle := NewSetTitleOp(rene, unix, "edited title", "title") + setTitle.Apply(&snapshot) - hash2, err := comment.Hash() + comment2 := NewAddCommentOp(rene, unix, "comment 2", nil) + comment2.Apply(&snapshot) + + hash3, err := comment2.Hash() require.NoError(t, err) edit := NewEditCommentOp(rene, unix, hash1, "create edited", nil) edit.Apply(&snapshot) - assert.Equal(t, len(snapshot.Timeline), 2) + assert.Equal(t, len(snapshot.Timeline), 4) assert.Equal(t, len(snapshot.Timeline[0].(*CreateTimelineItem).History), 2) assert.Equal(t, len(snapshot.Timeline[1].(*AddCommentTimelineItem).History), 1) + assert.Equal(t, len(snapshot.Timeline[3].(*AddCommentTimelineItem).History), 1) assert.Equal(t, snapshot.Comments[0].Message, "create edited") - assert.Equal(t, snapshot.Comments[1].Message, "comment") + assert.Equal(t, snapshot.Comments[1].Message, "comment 1") + assert.Equal(t, snapshot.Comments[2].Message, "comment 2") - edit2 := NewEditCommentOp(rene, unix, hash2, "comment edited", nil) + edit2 := NewEditCommentOp(rene, unix, hash2, "comment 1 edited", nil) edit2.Apply(&snapshot) - assert.Equal(t, len(snapshot.Timeline), 2) + assert.Equal(t, len(snapshot.Timeline), 4) + assert.Equal(t, len(snapshot.Timeline[0].(*CreateTimelineItem).History), 2) + assert.Equal(t, len(snapshot.Timeline[1].(*AddCommentTimelineItem).History), 2) + assert.Equal(t, len(snapshot.Timeline[3].(*AddCommentTimelineItem).History), 1) + assert.Equal(t, snapshot.Comments[0].Message, "create edited") + assert.Equal(t, snapshot.Comments[1].Message, "comment 1 edited") + assert.Equal(t, snapshot.Comments[2].Message, "comment 2") + + edit3 := NewEditCommentOp(rene, unix, hash3, "comment 2 edited", nil) + edit3.Apply(&snapshot) + + assert.Equal(t, len(snapshot.Timeline), 4) assert.Equal(t, len(snapshot.Timeline[0].(*CreateTimelineItem).History), 2) assert.Equal(t, len(snapshot.Timeline[1].(*AddCommentTimelineItem).History), 2) + assert.Equal(t, len(snapshot.Timeline[3].(*AddCommentTimelineItem).History), 2) assert.Equal(t, snapshot.Comments[0].Message, "create edited") - assert.Equal(t, snapshot.Comments[1].Message, "comment edited") + assert.Equal(t, snapshot.Comments[1].Message, "comment 1 edited") + assert.Equal(t, snapshot.Comments[2].Message, "comment 2 edited") } func TestEditCommentSerialize(t *testing.T) { -- cgit