1package bug
2
3import (
4 "testing"
5 "time"
6
7 "github.com/MichaelMure/git-bug/identity"
8 "github.com/stretchr/testify/assert"
9)
10
11func TestSetMetadata(t *testing.T) {
12 snapshot := Snapshot{}
13
14 var rene = identity.NewIdentity("René Descartes", "rene@descartes.fr")
15
16 unix := time.Now().Unix()
17
18 create := NewCreateOp(rene, unix, "title", "create", nil)
19 create.SetMetadata("key", "value")
20 create.Apply(&snapshot)
21 snapshot.Operations = append(snapshot.Operations, create)
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.SetMetadata("key2", "value2")
30 comment.Apply(&snapshot)
31 snapshot.Operations = append(snapshot.Operations, comment)
32
33 hash2, err := comment.Hash()
34 if err != nil {
35 t.Fatal(err)
36 }
37
38 op1 := NewSetMetadataOp(rene, unix, hash1, map[string]string{
39 "key": "override",
40 "key2": "value",
41 })
42
43 op1.Apply(&snapshot)
44 snapshot.Operations = append(snapshot.Operations, op1)
45
46 createMetadata := snapshot.Operations[0].AllMetadata()
47 assert.Equal(t, len(createMetadata), 2)
48 // original key is not overrided
49 assert.Equal(t, createMetadata["key"], "value")
50 // new key is set
51 assert.Equal(t, createMetadata["key2"], "value")
52
53 commentMetadata := snapshot.Operations[1].AllMetadata()
54 assert.Equal(t, len(commentMetadata), 1)
55 assert.Equal(t, commentMetadata["key2"], "value2")
56
57 op2 := NewSetMetadataOp(rene, unix, hash2, map[string]string{
58 "key2": "value",
59 "key3": "value3",
60 })
61
62 op2.Apply(&snapshot)
63 snapshot.Operations = append(snapshot.Operations, op2)
64
65 createMetadata = snapshot.Operations[0].AllMetadata()
66 assert.Equal(t, len(createMetadata), 2)
67 assert.Equal(t, createMetadata["key"], "value")
68 assert.Equal(t, createMetadata["key2"], "value")
69
70 commentMetadata = snapshot.Operations[1].AllMetadata()
71 assert.Equal(t, len(commentMetadata), 2)
72 // original key is not overrided
73 assert.Equal(t, commentMetadata["key2"], "value2")
74 // new key is set
75 assert.Equal(t, commentMetadata["key3"], "value3")
76
77 op3 := NewSetMetadataOp(rene, unix, hash1, map[string]string{
78 "key": "override",
79 "key2": "override",
80 })
81
82 op3.Apply(&snapshot)
83 snapshot.Operations = append(snapshot.Operations, op3)
84
85 createMetadata = snapshot.Operations[0].AllMetadata()
86 assert.Equal(t, len(createMetadata), 2)
87 // original key is not overrided
88 assert.Equal(t, createMetadata["key"], "value")
89 // previously set key is not overrided
90 assert.Equal(t, createMetadata["key2"], "value")
91
92 commentMetadata = snapshot.Operations[1].AllMetadata()
93 assert.Equal(t, len(commentMetadata), 2)
94 assert.Equal(t, commentMetadata["key2"], "value2")
95 assert.Equal(t, commentMetadata["key3"], "value3")
96}