@@ -1349,14 +1349,15 @@ var _ = Describe("Handler", func() {
1349
1349
1350
1350
Describe ("HandleInvokeChaincode" , func () {
1351
1351
var (
1352
- expectedSignedProp * pb.SignedProposal
1353
- expectedProposal * pb.Proposal
1354
- targetDefinition * ccprovider.ChaincodeData
1355
- fakePeerLedger * mock.PeerLedger
1356
- newTxSimulator * mock.TxSimulator
1357
- request * pb.ChaincodeSpec
1358
- incomingMessage * pb.ChaincodeMessage
1359
- response * pb.Response
1352
+ expectedSignedProp * pb.SignedProposal
1353
+ expectedProposal * pb.Proposal
1354
+ targetDefinition * ccprovider.ChaincodeData
1355
+ fakePeerLedger * mock.PeerLedger
1356
+ newTxSimulator * mock.TxSimulator
1357
+ newHistoryQueryExecutor * mock.HistoryQueryExecutor
1358
+ request * pb.ChaincodeSpec
1359
+ incomingMessage * pb.ChaincodeMessage
1360
+ response * pb.Response
1360
1361
)
1361
1362
1362
1363
BeforeEach (func () {
@@ -1372,9 +1373,11 @@ var _ = Describe("Handler", func() {
1372
1373
txContext .SignedProp = expectedSignedProp
1373
1374
1374
1375
newTxSimulator = & mock.TxSimulator {}
1376
+ newHistoryQueryExecutor = & mock.HistoryQueryExecutor {}
1375
1377
fakePeerLedger = & mock.PeerLedger {}
1376
1378
fakePeerLedger .NewTxSimulatorReturns (newTxSimulator , nil )
1377
1379
fakeLedgerGetter .GetLedgerReturns (fakePeerLedger )
1380
+ fakePeerLedger .NewHistoryQueryExecutorReturns (newHistoryQueryExecutor , nil )
1378
1381
1379
1382
targetDefinition = & ccprovider.ChaincodeData {
1380
1383
Name : "target-chaincode-data-name" ,
@@ -1481,6 +1484,23 @@ var _ = Describe("Handler", func() {
1481
1484
Expect (sim ).To (BeIdenticalTo (newTxSimulator )) // same instance, not just equal
1482
1485
})
1483
1486
1487
+ It ("creates a new history query executor for target execution" , func () {
1488
+ _ , err := handler .HandleInvokeChaincode (incomingMessage , txContext )
1489
+ Expect (err ).NotTo (HaveOccurred ())
1490
+
1491
+ Expect (fakePeerLedger .NewHistoryQueryExecutorCallCount ()).To (Equal (1 ))
1492
+ })
1493
+
1494
+ It ("provides the new history query executor in the context used for execution" , func () {
1495
+ _ , err := handler .HandleInvokeChaincode (incomingMessage , txContext )
1496
+ Expect (err ).NotTo (HaveOccurred ())
1497
+
1498
+ Expect (fakeExecutor .ExecuteCallCount ()).To (Equal (1 ))
1499
+ ctx , _ , _ := fakeExecutor .ExecuteArgsForCall (0 )
1500
+ hqe := ctx .Value (chaincode .HistoryQueryExecutorKey )
1501
+ Expect (hqe ).To (BeIdenticalTo (newHistoryQueryExecutor )) // same instance, not just equal
1502
+ })
1503
+
1484
1504
It ("marks the new transaction simulator as done after execute" , func () {
1485
1505
fakeExecutor .ExecuteStub = func (context.Context , * ccprovider.CCContext , ccprovider.ChaincodeSpecGetter ) (* pb.Response , * pb.ChaincodeEvent , error ) {
1486
1506
Expect (newTxSimulator .DoneCallCount ()).To (Equal (0 ))
@@ -1514,6 +1534,17 @@ var _ = Describe("Handler", func() {
1514
1534
Expect (err ).To (MatchError ("bonkers" ))
1515
1535
})
1516
1536
})
1537
+
1538
+ Context ("when creating the new history query executor fails" , func () {
1539
+ BeforeEach (func () {
1540
+ fakePeerLedger .NewHistoryQueryExecutorReturns (nil , errors .New ("razzies" ))
1541
+ })
1542
+
1543
+ It ("returns an error" , func () {
1544
+ _ , err := handler .HandleInvokeChaincode (incomingMessage , txContext )
1545
+ Expect (err ).To (MatchError ("razzies" ))
1546
+ })
1547
+ })
1517
1548
})
1518
1549
1519
1550
Context ("when the target is a system chaincode" , func () {
0 commit comments