implement AddComment

Michael Muré created

Change summary

bug/operations/add_comment.go    | 30 ++++++++++++++++++++++++++++++
bug/operations/create.go         |  4 ----
repository/git.go                |  6 ------
tests/operation_iterator_test.go |  7 ++++---
tests/operation_pack_test.go     |  1 +
5 files changed, 35 insertions(+), 13 deletions(-)

Detailed changes

bug/operations/add_comment.go 🔗

@@ -0,0 +1,30 @@
+package operations
+
+import "github.com/MichaelMure/git-bug/bug"
+
+var _ bug.Operation = AddCommentOperation{}
+
+type AddCommentOperation struct {
+	bug.OpBase
+	Message string     `json:"m"`
+	Author  bug.Person `json:"a"`
+}
+
+func NewAddCommentOp(author bug.Person, message string) AddCommentOperation {
+	return AddCommentOperation{
+		OpBase:  bug.OpBase{OperationType: bug.ADD_COMMENT},
+		Message: message,
+		Author:  author,
+	}
+}
+
+func (op AddCommentOperation) Apply(snapshot bug.Snapshot) bug.Snapshot {
+	comment := bug.Comment{
+		Message: op.Message,
+		Author:  op.Author,
+	}
+
+	snapshot.Comments = append(snapshot.Comments, comment)
+
+	return snapshot
+}

bug/operations/create.go 🔗

@@ -25,10 +25,6 @@ func NewCreateOp(author bug.Person, title, message string) CreateOperation {
 	}
 }
 
-//func (op CreateOperation) OpType() bug.OperationType {
-//	return bug.CREATE
-//}
-
 func (op CreateOperation) Apply(snapshot bug.Snapshot) bug.Snapshot {
 	empty := bug.Snapshot{}
 

repository/git.go 🔗

@@ -12,10 +12,6 @@ import (
 	"strings"
 )
 
-// This is used to have a different staging area than the regular git index
-// when creating data in git
-const gitEnvConfig = "GIT_INDEX_FILE=BUG_STAGING_INDEX"
-
 // GitRepo represents an instance of a (local) git repository.
 type GitRepo struct {
 	Path string
@@ -29,8 +25,6 @@ func (repo *GitRepo) runGitCommandWithIO(stdin io.Reader, stdout, stderr io.Writ
 	cmd.Stdout = stdout
 	cmd.Stderr = stderr
 
-	//cmd.Env = append(cmd.Env, gitEnvConfig)
-
 	return cmd.Run()
 }
 

tests/operation_iterator_test.go 🔗

@@ -13,9 +13,10 @@ var (
 		Email: "rene@descartes.fr",
 	}
 
-	createOp   = operations.NewCreateOp(rene, "title", "message")
-	setTitleOp = operations.NewSetTitleOp("title2")
-	mockRepo   = repository.NewMockRepoForTest()
+	createOp     = operations.NewCreateOp(rene, "title", "message")
+	setTitleOp   = operations.NewSetTitleOp("title2")
+	addCommentOp = operations.NewAddCommentOp(rene, "message2")
+	mockRepo     = repository.NewMockRepoForTest()
 )
 
 func TestOpIterator(t *testing.T) {

tests/operation_pack_test.go 🔗

@@ -13,6 +13,7 @@ func TestOperationPackSerialize(t *testing.T) {
 
 	opp.Append(createOp)
 	opp.Append(setTitleOp)
+	opp.Append(addCommentOp)
 
 	jsonBytes, err := opp.Serialize()