aboutsummaryrefslogtreecommitdiffstats
path: root/entities/bug/op_create_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'entities/bug/op_create_test.go')
-rw-r--r--entities/bug/op_create_test.go67
1 files changed, 67 insertions, 0 deletions
diff --git a/entities/bug/op_create_test.go b/entities/bug/op_create_test.go
new file mode 100644
index 00000000..f2c9e675
--- /dev/null
+++ b/entities/bug/op_create_test.go
@@ -0,0 +1,67 @@
+package bug
+
+import (
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/require"
+
+ "github.com/MichaelMure/git-bug/entities/identity"
+ "github.com/MichaelMure/git-bug/entity"
+ "github.com/MichaelMure/git-bug/entity/dag"
+ "github.com/MichaelMure/git-bug/repository"
+ "github.com/MichaelMure/git-bug/util/timestamp"
+)
+
+func TestCreate(t *testing.T) {
+ snapshot := Snapshot{}
+
+ repo := repository.NewMockRepoClock()
+
+ rene, err := identity.NewIdentity(repo, "René Descartes", "rene@descartes.fr")
+ require.NoError(t, err)
+
+ unix := time.Now().Unix()
+
+ create := NewCreateOp(rene, unix, "title", "message", nil)
+
+ create.Apply(&snapshot)
+
+ id := create.Id()
+ require.NoError(t, id.Validate())
+
+ comment := Comment{
+ id: entity.CombineIds(create.Id(), create.Id()),
+ Author: rene,
+ Message: "message",
+ UnixTime: timestamp.Timestamp(create.UnixTime),
+ }
+
+ expected := Snapshot{
+ id: create.Id(),
+ Title: "title",
+ Comments: []Comment{
+ comment,
+ },
+ Author: rene,
+ Participants: []identity.Interface{rene},
+ Actors: []identity.Interface{rene},
+ CreateTime: create.Time(),
+ Timeline: []TimelineItem{
+ &CreateTimelineItem{
+ CommentTimelineItem: NewCommentTimelineItem(comment),
+ },
+ },
+ }
+
+ require.Equal(t, expected, snapshot)
+}
+
+func TestCreateSerialize(t *testing.T) {
+ dag.SerializeRoundTripTest(t, func(author identity.Interface, unixTime int64) *CreateOperation {
+ return NewCreateOp(author, unixTime, "title", "message", nil)
+ })
+ dag.SerializeRoundTripTest(t, func(author identity.Interface, unixTime int64) *CreateOperation {
+ return NewCreateOp(author, unixTime, "title", "message", []repository.Hash{"hash1", "hash2"})
+ })
+}