aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2022-03-15 22:01:10 +0100
committerMichael Muré <batolettre@gmail.com>2022-03-15 22:01:10 +0100
commitc5b70d8d94bda20fb8834782ccdb1dbdfb85b052 (patch)
tree134b0417fd3db06967a8cbd29e42140fd24643cf
parentcac20c8c4dc9524773c1296165fe596cb9035202 (diff)
downloadgit-bug-c5b70d8d94bda20fb8834782ccdb1dbdfb85b052.tar.gz
bug: don't serialize multiple time the author, only once in OperationPack
-rw-r--r--bug/op_add_comment_test.go10
-rw-r--r--bug/op_create_test.go3
-rw-r--r--bug/op_edit_comment_test.go3
-rw-r--r--bug/op_label_change_test.go3
-rw-r--r--bug/op_noop_test.go3
-rw-r--r--bug/op_set_metadata_test.go3
-rw-r--r--bug/op_set_status_test.go3
-rw-r--r--bug/op_set_title_test.go3
-rw-r--r--bug/operation.go10
9 files changed, 12 insertions, 29 deletions
diff --git a/bug/op_add_comment_test.go b/bug/op_add_comment_test.go
index fb6fa8ed..446bdb18 100644
--- a/bug/op_add_comment_test.go
+++ b/bug/op_add_comment_test.go
@@ -5,7 +5,6 @@ import (
"testing"
"time"
- "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/MichaelMure/git-bug/identity"
@@ -22,18 +21,17 @@ func TestAddCommentSerialize(t *testing.T) {
before := NewAddCommentOp(rene, unix, "message", nil)
data, err := json.Marshal(before)
- assert.NoError(t, err)
+ require.NoError(t, err)
var after AddCommentOperation
err = json.Unmarshal(data, &after)
- assert.NoError(t, err)
+ require.NoError(t, err)
// enforce creating the ID
before.Id()
- // Replace the identity stub with the real thing
- assert.Equal(t, rene.Id(), after.Author().Id())
+ // Replace the identity as it's not serialized
after.Author_ = rene
- assert.Equal(t, before, &after)
+ require.Equal(t, before, &after)
}
diff --git a/bug/op_create_test.go b/bug/op_create_test.go
index 25b87cfe..7696d065 100644
--- a/bug/op_create_test.go
+++ b/bug/op_create_test.go
@@ -76,8 +76,7 @@ func TestCreateSerialize(t *testing.T) {
// enforce creating the ID
before.Id()
- // Replace the identity stub with the real thing
- require.Equal(t, rene.Id(), after.Author().Id())
+ // Replace the identity as it's not serialized
after.Author_ = rene
require.Equal(t, before, &after)
diff --git a/bug/op_edit_comment_test.go b/bug/op_edit_comment_test.go
index 5ba94706..62034a0b 100644
--- a/bug/op_edit_comment_test.go
+++ b/bug/op_edit_comment_test.go
@@ -93,8 +93,7 @@ func TestEditCommentSerialize(t *testing.T) {
// enforce creating the ID
before.Id()
- // Replace the identity stub with the real thing
- require.Equal(t, rene.Id(), after.Author().Id())
+ // Replace the identity as it's not serialized
after.Author_ = rene
require.Equal(t, before, &after)
diff --git a/bug/op_label_change_test.go b/bug/op_label_change_test.go
index 40dc4f0d..1892724e 100644
--- a/bug/op_label_change_test.go
+++ b/bug/op_label_change_test.go
@@ -30,8 +30,7 @@ func TestLabelChangeSerialize(t *testing.T) {
// enforce creating the ID
before.Id()
- // Replace the identity stub with the real thing
- require.Equal(t, rene.Id(), after.Author().Id())
+ // Replace the identity as it's not serialized
after.Author_ = rene
require.Equal(t, before, &after)
diff --git a/bug/op_noop_test.go b/bug/op_noop_test.go
index 0e3727c2..2bbfa219 100644
--- a/bug/op_noop_test.go
+++ b/bug/op_noop_test.go
@@ -32,8 +32,7 @@ func TestNoopSerialize(t *testing.T) {
// enforce creating the ID
before.Id()
- // Replace the identity stub with the real thing
- assert.Equal(t, rene.Id(), after.Author().Id())
+ // Replace the identity as it's not serialized
after.Author_ = rene
assert.Equal(t, before, &after)
diff --git a/bug/op_set_metadata_test.go b/bug/op_set_metadata_test.go
index 78f7d883..62c1c942 100644
--- a/bug/op_set_metadata_test.go
+++ b/bug/op_set_metadata_test.go
@@ -119,8 +119,7 @@ func TestSetMetadataSerialize(t *testing.T) {
// enforce creating the ID
before.Id()
- // Replace the identity stub with the real thing
- require.Equal(t, rene.Id(), after.Author().Id())
+ // Replace the identity as it's not serialized
after.Author_ = rene
require.Equal(t, before, &after)
diff --git a/bug/op_set_status_test.go b/bug/op_set_status_test.go
index 83ff22ae..75cadae2 100644
--- a/bug/op_set_status_test.go
+++ b/bug/op_set_status_test.go
@@ -30,8 +30,7 @@ func TestSetStatusSerialize(t *testing.T) {
// enforce creating the ID
before.Id()
- // Replace the identity stub with the real thing
- require.Equal(t, rene.Id(), after.Author().Id())
+ // Replace the identity as it's not serialized
after.Author_ = rene
require.Equal(t, before, &after)
diff --git a/bug/op_set_title_test.go b/bug/op_set_title_test.go
index 7059c4c7..2a227709 100644
--- a/bug/op_set_title_test.go
+++ b/bug/op_set_title_test.go
@@ -30,8 +30,7 @@ func TestSetTitleSerialize(t *testing.T) {
// enforce creating the ID
before.Id()
- // Replace the identity stub with the real thing
- require.Equal(t, rene.Id(), after.Author().Id())
+ // Replace the identity as it's not serialized
after.Author_ = rene
require.Equal(t, before, &after)
diff --git a/bug/operation.go b/bug/operation.go
index 2e86921a..b5c6b1de 100644
--- a/bug/operation.go
+++ b/bug/operation.go
@@ -135,7 +135,7 @@ func operationUnmarshaller(author identity.Interface, raw json.RawMessage, resol
// OpBase implement the common code for all operations
type OpBase struct {
OperationType OperationType `json:"type"`
- Author_ identity.Interface `json:"author"`
+ Author_ identity.Interface `json:"-"` // not serialized
// TODO: part of the data model upgrade, this should eventually be a timestamp + lamport
UnixTime int64 `json:"timestamp"`
Metadata map[string]string `json:"metadata,omitempty"`
@@ -178,7 +178,6 @@ func (base *OpBase) UnmarshalJSON(data []byte) error {
aux := struct {
OperationType OperationType `json:"type"`
- Author json.RawMessage `json:"author"`
UnixTime int64 `json:"timestamp"`
Metadata map[string]string `json:"metadata,omitempty"`
Nonce []byte `json:"nonce"`
@@ -188,14 +187,7 @@ func (base *OpBase) UnmarshalJSON(data []byte) error {
return err
}
- // delegate the decoding of the identity
- author, err := identity.UnmarshalJSON(aux.Author)
- if err != nil {
- return err
- }
-
base.OperationType = aux.OperationType
- base.Author_ = author
base.UnixTime = aux.UnixTime
base.Metadata = aux.Metadata
base.Nonce = aux.Nonce