op_edit_comment_test.go

 1package bug
 2
 3import (
 4	"testing"
 5	"time"
 6
 7	"gotest.tools/assert"
 8)
 9
10func TestEdit(t *testing.T) {
11	snapshot := Snapshot{}
12
13	var rene = Person{
14		Name:  "René Descartes",
15		Email: "rene@descartes.fr",
16	}
17
18	unix := time.Now().Unix()
19
20	create := NewCreateOp(rene, unix, "title", "create", nil)
21	create.Apply(&snapshot)
22
23	hash1, err := create.Hash()
24	if err != nil {
25		t.Fatal(err)
26	}
27
28	comment := NewAddCommentOp(rene, unix, "comment", nil)
29	comment.Apply(&snapshot)
30
31	hash2, err := comment.Hash()
32	if err != nil {
33		t.Fatal(err)
34	}
35
36	edit := NewEditCommentOp(rene, unix, hash1, "create edited", nil)
37	edit.Apply(&snapshot)
38
39	assert.Equal(t, len(snapshot.Timeline), 2)
40	assert.Equal(t, len(snapshot.Timeline[0].(*CreateTimelineItem).History), 2)
41	assert.Equal(t, len(snapshot.Timeline[1].(*CommentTimelineItem).History), 1)
42	assert.Equal(t, snapshot.Comments[0].Message, "create edited")
43	assert.Equal(t, snapshot.Comments[1].Message, "comment")
44
45	edit2 := NewEditCommentOp(rene, unix, hash2, "comment edited", nil)
46	edit2.Apply(&snapshot)
47
48	assert.Equal(t, len(snapshot.Timeline), 2)
49	assert.Equal(t, len(snapshot.Timeline[0].(*CreateTimelineItem).History), 2)
50	assert.Equal(t, len(snapshot.Timeline[1].(*CommentTimelineItem).History), 2)
51	assert.Equal(t, snapshot.Comments[0].Message, "create edited")
52	assert.Equal(t, snapshot.Comments[1].Message, "comment edited")
53}