aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2019-04-14 14:12:44 +0200
committerMichael Muré <batolettre@gmail.com>2019-04-14 14:12:44 +0200
commitd862575d80a859dd4ce42fb10a6dbb49828544f1 (patch)
tree27e2409d7e17990df1ab5c1946d575b5b3692ead
parent5eeeae7cdf24083277076041c4e8cdc6b4737fda (diff)
downloadgit-bug-d862575d80a859dd4ce42fb10a6dbb49828544f1.tar.gz
bug: fix EditCommentOperation targeting the wrong comment
fix #126
-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) {