public async Task MonitoringCoinTransactionJobUnitTest_TransactionIsInBlockchainSenhdEvent() { string operationId = "OpId-2"; QueueTriggeringContext context = new QueueTriggeringContext(DateTimeOffset.UtcNow); CoinTransactionMessage coinTransactionMessage = new CoinTransactionMessage() { PutDateTime = DateTime.UtcNow, TransactionHash = _commitedTransactionHash, OperationId = operationId }; #region ArrangeMocks ICoinTransaction coinTransaction = new CoinTransaction() { ConfirmationLevel = 1, TransactionHash = _commitedTransactionHash }; ICoinEvent coinEvent = new CoinEvent(operationId, _commitedTransactionHash, "from", "to", "1000000000000000000", CoinEventType.TransferStarted, "contractAddress", true); _ethereumTransactionService.Setup(x => x.IsTransactionInPool(_commitedTransactionHash)).Returns(Task.FromResult(false)); _coinTransactionService.Setup(x => x.ProcessTransaction(coinTransactionMessage)).Returns(Task.FromResult <ICoinTransaction>(coinTransaction)); _coinEventService.Setup(x => x.GetCoinEvent(_commitedTransactionHash)).Returns(Task.FromResult <ICoinEvent>(coinEvent)); _coinEventService.Setup(x => x.PublishEvent(coinEvent, It.IsAny <bool>())).Returns(Task.FromResult(0)).Verifiable(); #endregion MonitoringCoinTransactionJob job = GetJob(); await job.Execute(coinTransactionMessage, context); _coinEventService.Verify(x => x.PublishEvent(coinEvent, It.IsAny <bool>()), Times.Once); }
public async Task MonitoringCoinTransactionJobUnitTest_LostTransactionProcessing() { string operationId = "OpId-3"; QueueTriggeringContext context = new QueueTriggeringContext(DateTimeOffset.UtcNow); CoinTransactionMessage coinTransactionMessage = new CoinTransactionMessage() { PutDateTime = DateTime.UtcNow, TransactionHash = _lostTransactionHash, OperationId = operationId }; #region ArrangeMocks ICoinEvent coinEvent = new CoinEvent(operationId, _lostTransactionHash, "from", "to", "1000000000000000000", CoinEventType.TransferStarted, "contractAddress", true); _ethereumTransactionService.Setup(x => x.IsTransactionInPool(_lostTransactionHash)).Returns(Task.FromResult(false)); _coinTransactionService.Setup(x => x.ProcessTransaction(coinTransactionMessage)).Returns(Task.FromResult <ICoinTransaction>(null)); _coinEventService.Setup(x => x.GetCoinEvent(_lostTransactionHash)).Returns(Task.FromResult <ICoinEvent>(coinEvent)); _coinEventService.Setup(x => x.PublishEvent(coinEvent, It.IsAny <bool>())).Returns(Task.FromResult(0)).Verifiable(); _pendingOperationService.Setup(x => x.RefreshOperationByIdAsync(operationId)).Returns(Task.FromResult(0)).Verifiable(); #endregion MonitoringCoinTransactionJob job = GetJob(); await job.Execute(coinTransactionMessage, context); _coinEventService.Verify(x => x.PublishEvent(coinEvent, It.IsAny <bool>()), Times.Never); _pendingOperationService.Verify(x => x.RefreshOperationByIdAsync(operationId), Times.Once); }
public async Task MonitoringCoinTransactionJobUnitTest_SkipTransactionThatIsStillInMemoryPool() { string operationId = "OpId-1"; QueueTriggeringContext context = new QueueTriggeringContext(DateTimeOffset.UtcNow); CoinTransactionMessage coinTransactionMessage = new CoinTransactionMessage() { PutDateTime = DateTime.UtcNow, TransactionHash = _memoryPoolTransactionHash, OperationId = operationId }; #region ArrangeMocks _ethereumTransactionService.Setup(x => x.IsTransactionInPool(_memoryPoolTransactionHash)).Returns(Task.FromResult(true)); _coinTransactionService.Setup(x => x.ProcessTransaction(coinTransactionMessage)).Verifiable(); #endregion MonitoringCoinTransactionJob job = GetJob(); await job.Execute(coinTransactionMessage, context); _coinTransactionService.Verify(x => x.ProcessTransaction(coinTransactionMessage), Times.Never); }