aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bug/op_edit_comment.go2
-rw-r--r--bug/op_edit_comment_test.go44
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) {