3333import org .web3j .crypto .ECKeyPair ;
3434import org .web3j .crypto .Keys ;
3535import org .web3j .protocol .core .RemoteFunctionCall ;
36+ import org .web3j .protocol .core .methods .response .Log ;
3637import org .web3j .protocol .core .methods .response .TransactionReceipt ;
38+ import org .web3j .utils .Numeric ;
3739
3840import java .io .IOException ;
3941import java .math .BigInteger ;
4042import java .text .MessageFormat ;
43+ import java .util .List ;
4144import java .util .Optional ;
4245
46+ import static com .iexec .blockchain .broker .BrokerService .SCHEDULER_NOTICE ;
4347import static org .assertj .core .api .Assertions .assertThat ;
4448import static org .assertj .core .api .Assertions .assertThatThrownBy ;
4549import static org .mockito .ArgumentMatchers .any ;
@@ -426,8 +430,6 @@ void shouldFailToMatchOrdersWithDataset() throws Exception {
426430 when (remoteCall .send ()).thenThrow (IOException .class );
427431 assertThat (brokerService .fireMatchOrders (appOrder , datasetOrder ,workerpoolOrder , requestOrder ))
428432 .isEmpty ();
429- assertThat (brokerService .fireMatchOrders (appOrder , datasetOrder , workerpoolOrder , requestOrder ))
430- .isEmpty ();
431433 }
432434
433435 @ Test
@@ -443,10 +445,34 @@ void shouldFailToMatchOrdersWithoutDataset() throws Exception {
443445 when (remoteCall .send ()).thenThrow (IOException .class );
444446 assertThat (brokerService .fireMatchOrders (appOrder , datasetOrder ,workerpoolOrder , requestOrder ))
445447 .isEmpty ();
446- assertThat (brokerService .fireMatchOrders (appOrder , datasetOrder , workerpoolOrder , requestOrder ))
447- .isEmpty ();
448448 }
449449
450+ @ Test
451+ void shouldMatchOrdersWithDataset () throws Exception {
452+ String dealId = "dealId" ;
453+ AppOrder appOrder = generateAppOrder ();
454+ DatasetOrder datasetOrder = generateDatasetOrder (true );
455+ WorkerpoolOrder workerpoolOrder = generateWorkerpoolOrder ();
456+ RequestOrder requestOrder = generateRequestOrder (
457+ appOrder , datasetOrder , workerpoolOrder );
458+ IexecHubContract iexecHubContract = mock (IexecHubContract .class );
459+ when (iexecHubService .getHubContract ()).thenReturn (iexecHubContract );
460+ when (iexecHubContract .matchOrders (any (), any (), any (), any ())).thenReturn (remoteCall );
461+ String workerpoolAddress = Numeric .toHexStringWithPrefixZeroPadded (
462+ Numeric .toBigInt (workerpoolOrder .getWorkerpool ()), 64 );
463+ Log web3Log = new Log ();
464+ web3Log .setData (dealId );
465+ web3Log .setTopics (List .of (SCHEDULER_NOTICE , workerpoolAddress ));
466+ TransactionReceipt receipt = new TransactionReceipt ();
467+ receipt .setTransactionHash ("txHash" );
468+ receipt .setBlockNumber ("0x1" );
469+ receipt .setStatus ("1" );
470+ receipt .setLogs (List .of (web3Log ));
471+ when (remoteCall .send ()).thenReturn (receipt );
472+ assertThat (brokerService .fireMatchOrders (appOrder , datasetOrder ,workerpoolOrder , requestOrder ))
473+ .isNotEmpty ()
474+ .contains (dealId );
475+ }
450476 //endregion
451477
452478 //region hasRequesterAcceptedPrices
0 commit comments