diff options
author | Steve Moyer <smoyer1@selesy.com> | 2022-08-23 10:33:19 -0400 |
---|---|---|
committer | Steve Moyer <smoyer1@selesy.com> | 2022-08-23 10:33:19 -0400 |
commit | 7ba98bfadc2c4c7fd3e777074976b78d6171b163 (patch) | |
tree | 4865a84837a016e9a18b566046a2aa7a1992acc7 /entities/bug/op_edit_comment_test.go | |
parent | 2c2c449187557384fd1e5b9333e808451be86041 (diff) | |
parent | 5a70e8b3a2e0fe3d1a1dcd4c24bb6bf64633cb7f (diff) | |
download | git-bug-7ba98bfadc2c4c7fd3e777074976b78d6171b163.tar.gz |
Merge branch 'master' into fix-850-ineffective-comment-edit
Diffstat (limited to 'entities/bug/op_edit_comment_test.go')
-rw-r--r-- | entities/bug/op_edit_comment_test.go | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/entities/bug/op_edit_comment_test.go b/entities/bug/op_edit_comment_test.go new file mode 100644 index 00000000..1b649cd1 --- /dev/null +++ b/entities/bug/op_edit_comment_test.go @@ -0,0 +1,84 @@ +package bug + +import ( + "testing" + "time" + + "github.com/stretchr/testify/require" + + "github.com/MichaelMure/git-bug/entities/identity" + "github.com/MichaelMure/git-bug/entity/dag" + "github.com/MichaelMure/git-bug/repository" +) + +func TestEdit(t *testing.T) { + snapshot := Snapshot{} + + repo := repository.NewMockRepo() + + rene, err := identity.NewIdentity(repo, "René Descartes", "rene@descartes.fr") + require.NoError(t, err) + + unix := time.Now().Unix() + + create := NewCreateOp(rene, unix, "title", "create", nil) + create.Apply(&snapshot) + + require.NoError(t, create.Id().Validate()) + + comment1 := NewAddCommentOp(rene, unix, "comment 1", nil) + comment1.Apply(&snapshot) + + require.NoError(t, comment1.Id().Validate()) + + // add another unrelated op in between + setTitle := NewSetTitleOp(rene, unix, "edited title", "title") + setTitle.Apply(&snapshot) + + comment2 := NewAddCommentOp(rene, unix, "comment 2", nil) + comment2.Apply(&snapshot) + + require.NoError(t, comment2.Id().Validate()) + + edit := NewEditCommentOp(rene, unix, create.Id(), "create edited", nil) + edit.Apply(&snapshot) + + require.Len(t, snapshot.Timeline, 4) + require.Len(t, snapshot.Timeline[0].(*CreateTimelineItem).History, 2) + require.Len(t, snapshot.Timeline[1].(*AddCommentTimelineItem).History, 1) + require.Len(t, snapshot.Timeline[3].(*AddCommentTimelineItem).History, 1) + require.Equal(t, snapshot.Comments[0].Message, "create edited") + require.Equal(t, snapshot.Comments[1].Message, "comment 1") + require.Equal(t, snapshot.Comments[2].Message, "comment 2") + + edit2 := NewEditCommentOp(rene, unix, comment1.Id(), "comment 1 edited", nil) + edit2.Apply(&snapshot) + + require.Len(t, snapshot.Timeline, 4) + require.Len(t, snapshot.Timeline[0].(*CreateTimelineItem).History, 2) + require.Len(t, snapshot.Timeline[1].(*AddCommentTimelineItem).History, 2) + require.Len(t, snapshot.Timeline[3].(*AddCommentTimelineItem).History, 1) + require.Equal(t, snapshot.Comments[0].Message, "create edited") + require.Equal(t, snapshot.Comments[1].Message, "comment 1 edited") + require.Equal(t, snapshot.Comments[2].Message, "comment 2") + + edit3 := NewEditCommentOp(rene, unix, comment2.Id(), "comment 2 edited", nil) + edit3.Apply(&snapshot) + + require.Len(t, snapshot.Timeline, 4) + require.Len(t, snapshot.Timeline[0].(*CreateTimelineItem).History, 2) + require.Len(t, snapshot.Timeline[1].(*AddCommentTimelineItem).History, 2) + require.Len(t, snapshot.Timeline[3].(*AddCommentTimelineItem).History, 2) + require.Equal(t, snapshot.Comments[0].Message, "create edited") + require.Equal(t, snapshot.Comments[1].Message, "comment 1 edited") + require.Equal(t, snapshot.Comments[2].Message, "comment 2 edited") +} + +func TestEditCommentSerialize(t *testing.T) { + dag.SerializeRoundTripTest(t, func(author identity.Interface, unixTime int64) *EditCommentOperation { + return NewEditCommentOp(author, unixTime, "target", "message", nil) + }) + dag.SerializeRoundTripTest(t, func(author identity.Interface, unixTime int64) *EditCommentOperation { + return NewEditCommentOp(author, unixTime, "target", "message", []repository.Hash{"hash1", "hash2"}) + }) +} |