package bug import ( "github.com/MichaelMure/git-bug/identity" "github.com/MichaelMure/git-bug/repository" "github.com/stretchr/testify/assert" "testing" "time" ) var ( // Beware, don't those test data in multi-repo situation ! // As an example, the Identity would be considered commited after a commit // in one repo, // rene = identity.NewIdentity("René Descartes", "rene@descartes.fr") // unix = time.Now().Unix() // createOp = NewCreateOp(rene, unix, "title", "message", nil) // setTitleOp = NewSetTitleOp(rene, unix, "title2", "title1") // addCommentOp = NewAddCommentOp(rene, unix, "message2", nil) // setStatusOp = NewSetStatusOp(rene, unix, ClosedStatus) // labelChangeOp = NewLabelChangeOperation(rene, unix, []Label{"added"}, []Label{"removed"}) ) func ExampleOperationIterator() { b := NewBug() // add operations it := NewOperationIterator(b) for it.Next() { // do something with each operations _ = it.Value() } } func TestOpIterator(t *testing.T) { mockRepo := repository.NewMockRepoForTest() rene := identity.NewIdentity("René Descartes", "rene@descartes.fr") unix := time.Now().Unix() createOp := NewCreateOp(rene, unix, "title", "message", nil) setTitleOp := NewSetTitleOp(rene, unix, "title2", "title1") addCommentOp := NewAddCommentOp(rene, unix, "message2", nil) setStatusOp := NewSetStatusOp(rene, unix, ClosedStatus) labelChangeOp := NewLabelChangeOperation(rene, unix, []Label{"added"}, []Label{"removed"}) bug1 := NewBug() // first pack bug1.Append(createOp) bug1.Append(setTitleOp) bug1.Append(addCommentOp) bug1.Append(setStatusOp) bug1.Append(labelChangeOp) err := bug1.Commit(mockRepo) assert.NoError(t, err) // second pack bug1.Append(setTitleOp) bug1.Append(setTitleOp) bug1.Append(setTitleOp) err = bug1.Commit(mockRepo) assert.NoError(t, err) // staging bug1.Append(setTitleOp) bug1.Append(setTitleOp) bug1.Append(setTitleOp) it := NewOperationIterator(bug1) counter := 0 for it.Next() { _ = it.Value() counter++ } if counter != 11 { t.Fatalf("Wrong count of value iterated (%d instead of 8)", counter) } }