bug: fix tests

Michael Muré created

Change summary

bug/op_create.go            |  7 +++++++
bug/op_create_test.go       |  7 +++++--
bug/op_edit_comment_test.go | 30 +++++++++++++++---------------
bug/op_set_metadata_test.go | 12 ++++++------
4 files changed, 33 insertions(+), 23 deletions(-)

Detailed changes

bug/op_create.go 🔗

@@ -54,6 +54,13 @@ func (op *CreateOperation) SetMetadata(key string, value string) {
 }
 
 func (op *CreateOperation) Apply(snapshot *Snapshot) {
+	// sanity check: will fail when adding a second Create
+	if snapshot.id != "" && snapshot.id != entity.UnsetId && snapshot.id != op.Id() {
+		panic("adding a second Create operation")
+	}
+
+	snapshot.id = op.Id()
+
 	snapshot.addActor(op.Author)
 	snapshot.addParticipant(op.Author)
 

bug/op_create_test.go 🔗

@@ -29,14 +29,17 @@ func TestCreate(t *testing.T) {
 	id := create.Id()
 	require.NoError(t, id.Validate())
 
+	commentId := DeriveCommentId(create.Id(), create.Id())
+
 	comment := Comment{
-		id:       id,
+		id:       commentId,
 		Author:   rene,
 		Message:  "message",
 		UnixTime: timestamp.Timestamp(create.UnixTime),
 	}
 
 	expected := Snapshot{
+		id:    create.Id(),
 		Title: "title",
 		Comments: []Comment{
 			comment,
@@ -47,7 +50,7 @@ func TestCreate(t *testing.T) {
 		CreateTime:   create.Time(),
 		Timeline: []TimelineItem{
 			&CreateTimelineItem{
-				CommentTimelineItem: NewCommentTimelineItem(id, comment),
+				CommentTimelineItem: NewCommentTimelineItem(commentId, comment),
 			},
 		},
 	}

bug/op_edit_comment_test.go 🔗

@@ -43,35 +43,35 @@ func TestEdit(t *testing.T) {
 	id3 := comment2.Id()
 	require.NoError(t, id3.Validate())
 
-	edit := NewEditCommentOp(rene, unix, id1, "create edited", nil)
+	edit := NewEditCommentOp(rene, unix, snapshot.Comments[0].Id(), "create edited", nil)
 	edit.Apply(&snapshot)
 
-	require.Equal(t, len(snapshot.Timeline), 4)
-	require.Equal(t, len(snapshot.Timeline[0].(*CreateTimelineItem).History), 2)
-	require.Equal(t, len(snapshot.Timeline[1].(*AddCommentTimelineItem).History), 1)
-	require.Equal(t, len(snapshot.Timeline[3].(*AddCommentTimelineItem).History), 1)
+	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, id2, "comment 1 edited", nil)
+	edit2 := NewEditCommentOp(rene, unix, snapshot.Comments[1].Id(), "comment 1 edited", nil)
 	edit2.Apply(&snapshot)
 
-	require.Equal(t, len(snapshot.Timeline), 4)
-	require.Equal(t, len(snapshot.Timeline[0].(*CreateTimelineItem).History), 2)
-	require.Equal(t, len(snapshot.Timeline[1].(*AddCommentTimelineItem).History), 2)
-	require.Equal(t, len(snapshot.Timeline[3].(*AddCommentTimelineItem).History), 1)
+	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, id3, "comment 2 edited", nil)
+	edit3 := NewEditCommentOp(rene, unix, snapshot.Comments[2].Id(), "comment 2 edited", nil)
 	edit3.Apply(&snapshot)
 
-	require.Equal(t, len(snapshot.Timeline), 4)
-	require.Equal(t, len(snapshot.Timeline[0].(*CreateTimelineItem).History), 2)
-	require.Equal(t, len(snapshot.Timeline[1].(*AddCommentTimelineItem).History), 2)
-	require.Equal(t, len(snapshot.Timeline[3].(*AddCommentTimelineItem).History), 2)
+	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")

bug/op_set_metadata_test.go 🔗

@@ -46,14 +46,14 @@ func TestSetMetadata(t *testing.T) {
 	snapshot.Operations = append(snapshot.Operations, op1)
 
 	createMetadata := snapshot.Operations[0].AllMetadata()
-	require.Equal(t, len(createMetadata), 2)
+	require.Len(t, createMetadata, 2)
 	// original key is not overrided
 	require.Equal(t, createMetadata["key"], "value")
 	// new key is set
 	require.Equal(t, createMetadata["key2"], "value")
 
 	commentMetadata := snapshot.Operations[1].AllMetadata()
-	require.Equal(t, len(commentMetadata), 1)
+	require.Len(t, commentMetadata, 1)
 	require.Equal(t, commentMetadata["key2"], "value2")
 
 	op2 := NewSetMetadataOp(rene, unix, id2, map[string]string{
@@ -65,12 +65,12 @@ func TestSetMetadata(t *testing.T) {
 	snapshot.Operations = append(snapshot.Operations, op2)
 
 	createMetadata = snapshot.Operations[0].AllMetadata()
-	require.Equal(t, len(createMetadata), 2)
+	require.Len(t, createMetadata, 2)
 	require.Equal(t, createMetadata["key"], "value")
 	require.Equal(t, createMetadata["key2"], "value")
 
 	commentMetadata = snapshot.Operations[1].AllMetadata()
-	require.Equal(t, len(commentMetadata), 2)
+	require.Len(t, commentMetadata, 2)
 	// original key is not overrided
 	require.Equal(t, commentMetadata["key2"], "value2")
 	// new key is set
@@ -85,14 +85,14 @@ func TestSetMetadata(t *testing.T) {
 	snapshot.Operations = append(snapshot.Operations, op3)
 
 	createMetadata = snapshot.Operations[0].AllMetadata()
-	require.Equal(t, len(createMetadata), 2)
+	require.Len(t, createMetadata, 2)
 	// original key is not overrided
 	require.Equal(t, createMetadata["key"], "value")
 	// previously set key is not overrided
 	require.Equal(t, createMetadata["key2"], "value")
 
 	commentMetadata = snapshot.Operations[1].AllMetadata()
-	require.Equal(t, len(commentMetadata), 2)
+	require.Len(t, commentMetadata, 2)
 	require.Equal(t, commentMetadata["key2"], "value2")
 	require.Equal(t, commentMetadata["key3"], "value3")
 }