1package bug
2
3import (
4 "fmt"
5 "testing"
6 "time"
7
8 "github.com/stretchr/testify/require"
9
10 "github.com/MichaelMure/git-bug/identity"
11 "github.com/MichaelMure/git-bug/repository"
12)
13
14func ExampleOperationIterator() {
15 b := NewBug()
16
17 // add operations
18
19 it := NewOperationIterator(b)
20
21 for it.Next() {
22 // do something with each operations
23 _ = it.Value()
24 }
25}
26
27func TestOpIterator(t *testing.T) {
28 repo := repository.NewMockRepo()
29
30 rene, err := identity.NewIdentity(repo, "René Descartes", "rene@descartes.fr")
31 require.NoError(t, err)
32 err = rene.Commit(repo)
33 require.NoError(t, err)
34
35 unix := time.Now().Unix()
36
37 createOp := NewCreateOp(rene, unix, "title", "message", nil)
38 addCommentOp := NewAddCommentOp(rene, unix, "message2", nil)
39 setStatusOp := NewSetStatusOp(rene, unix, ClosedStatus)
40 labelChangeOp := NewLabelChangeOperation(rene, unix, []Label{"added"}, []Label{"removed"})
41
42 var i int
43 genTitleOp := func() Operation {
44 i++
45 return NewSetTitleOp(rene, unix, fmt.Sprintf("title%d", i), "")
46 }
47
48 bug1 := NewBug()
49
50 // first pack
51 bug1.Append(createOp)
52 bug1.Append(addCommentOp)
53 bug1.Append(setStatusOp)
54 bug1.Append(labelChangeOp)
55 err = bug1.Commit(repo)
56 require.NoError(t, err)
57
58 // second pack
59 bug1.Append(genTitleOp())
60 bug1.Append(genTitleOp())
61 bug1.Append(genTitleOp())
62 err = bug1.Commit(repo)
63 require.NoError(t, err)
64
65 // staging
66 bug1.Append(genTitleOp())
67 bug1.Append(genTitleOp())
68 bug1.Append(genTitleOp())
69
70 it := NewOperationIterator(bug1)
71
72 counter := 0
73 for it.Next() {
74 _ = it.Value()
75 counter++
76 }
77
78 require.Equal(t, 10, counter)
79}