github.com/sykesm/fabric@v1.1.0-preview.0.20200129034918-2aa12b1a0181/common/ledger/blockledger/util_test.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package blockledger_test
     8  
     9  import (
    10  	"testing"
    11  
    12  	"github.com/hyperledger/fabric-protos-go/common"
    13  	"github.com/hyperledger/fabric/common/deliver/mock"
    14  	"github.com/hyperledger/fabric/common/ledger/blockledger"
    15  	"github.com/stretchr/testify/assert"
    16  )
    17  
    18  func TestClose(t *testing.T) {
    19  	for _, testCase := range []struct {
    20  		name               string
    21  		status             common.Status
    22  		isIteratorNil      bool
    23  		expectedCloseCount int
    24  	}{
    25  		{
    26  			name:          "nil iterator",
    27  			isIteratorNil: true,
    28  		},
    29  		{
    30  			name:               "Next() fails",
    31  			status:             common.Status_INTERNAL_SERVER_ERROR,
    32  			expectedCloseCount: 1,
    33  		},
    34  		{
    35  			name:               "Next() succeeds",
    36  			status:             common.Status_SUCCESS,
    37  			expectedCloseCount: 1,
    38  		},
    39  	} {
    40  		t.Run(testCase.name, func(t *testing.T) {
    41  			var iterator *mock.BlockIterator
    42  			reader := &mock.BlockReader{}
    43  			if !testCase.isIteratorNil {
    44  				iterator = &mock.BlockIterator{}
    45  				iterator.NextReturns(&common.Block{}, testCase.status)
    46  				reader.IteratorReturns(iterator, 1)
    47  			}
    48  
    49  			blockledger.GetBlock(reader, 1)
    50  			if !testCase.isIteratorNil {
    51  				assert.Equal(t, testCase.expectedCloseCount, iterator.CloseCallCount())
    52  			}
    53  		})
    54  	}
    55  }