go_study/fabric-main/common/ledger/blockledger/util_test.go

56 lines
1.3 KiB
Go

/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package blockledger_test
import (
"testing"
"github.com/hyperledger/fabric-protos-go/common"
"github.com/hyperledger/fabric/common/deliver/mock"
"github.com/hyperledger/fabric/common/ledger/blockledger"
"github.com/stretchr/testify/require"
)
func TestClose(t *testing.T) {
for _, testCase := range []struct {
name string
status common.Status
isIteratorNil bool
expectedCloseCount int
}{
{
name: "nil iterator",
isIteratorNil: true,
},
{
name: "Next() fails",
status: common.Status_INTERNAL_SERVER_ERROR,
expectedCloseCount: 1,
},
{
name: "Next() succeeds",
status: common.Status_SUCCESS,
expectedCloseCount: 1,
},
} {
t.Run(testCase.name, func(t *testing.T) {
var iterator *mock.BlockIterator
reader := &mock.BlockReader{}
if !testCase.isIteratorNil {
iterator = &mock.BlockIterator{}
iterator.NextReturns(&common.Block{}, testCase.status)
reader.IteratorReturns(iterator, 1)
}
blockledger.GetBlock(reader, 1)
if !testCase.isIteratorNil {
require.Equal(t, testCase.expectedCloseCount, iterator.CloseCallCount())
}
})
}
}