1package dag
2
3import (
4 "testing"
5
6 "github.com/stretchr/testify/require"
7
8 "github.com/MichaelMure/git-bug/identity"
9)
10
11func TestOperationPackReadWrite(t *testing.T) {
12 repo, id1, _, def := makeTestContext()
13
14 opp := &operationPack{
15 Author: id1,
16 Operations: []Operation{
17 newOp1(id1, "foo"),
18 newOp2(id1, "bar"),
19 },
20 CreateTime: 123,
21 EditTime: 456,
22 }
23
24 commitHash, err := opp.Write(def, repo)
25 require.NoError(t, err)
26
27 commit, err := repo.ReadCommit(commitHash)
28 require.NoError(t, err)
29
30 opp2, err := readOperationPack(def, repo, commit)
31 require.NoError(t, err)
32
33 require.Equal(t, opp, opp2)
34
35 // make sure we get the same Id with the same data
36 opp3 := &operationPack{
37 Author: id1,
38 Operations: []Operation{
39 newOp1(id1, "foo"),
40 newOp2(id1, "bar"),
41 },
42 CreateTime: 123,
43 EditTime: 456,
44 }
45 require.Equal(t, opp.Id(), opp3.Id())
46}
47
48func TestOperationPackSignedReadWrite(t *testing.T) {
49 repo, id1, _, def := makeTestContext()
50
51 err := id1.(*identity.Identity).Mutate(repo, func(orig *identity.Mutator) {
52 orig.Keys = append(orig.Keys, identity.GenerateKey())
53 })
54 require.NoError(t, err)
55
56 opp := &operationPack{
57 Author: id1,
58 Operations: []Operation{
59 newOp1(id1, "foo"),
60 newOp2(id1, "bar"),
61 },
62 CreateTime: 123,
63 EditTime: 456,
64 }
65
66 commitHash, err := opp.Write(def, repo)
67 require.NoError(t, err)
68
69 commit, err := repo.ReadCommit(commitHash)
70 require.NoError(t, err)
71
72 opp2, err := readOperationPack(def, repo, commit)
73 require.NoError(t, err)
74
75 require.Equal(t, opp, opp2)
76
77 // make sure we get the same Id with the same data
78 opp3 := &operationPack{
79 Author: id1,
80 Operations: []Operation{
81 newOp1(id1, "foo"),
82 newOp2(id1, "bar"),
83 },
84 CreateTime: 123,
85 EditTime: 456,
86 }
87 require.Equal(t, opp.Id(), opp3.Id())
88}