private List<UserFundsDto> getFundsAndRefundsFor(final Long requestId) { final List<Fund> fundsForRequest = fundRepository.findAllByRequestId(requestId); final List<Refund> refundsForRequest = refundRepository.findAllByRequestId(requestId); return fundsAndRefundsAggregator.aggregate(Stream.concat(fundFundsByFunderAggregator.aggregate(fundsForRequest).stream(), refundFundsByFunderAggregator.aggregate(refundsForRequest).stream()) .collect(Collectors.toList())); }
@Override @Transactional public void refundProcessed(final RefundProcessedCommand command) { final List<RefundRequest> refundRequests = refundRequestRepository.findAllByRequestIdAndStatusIn(command.getRequestId(), APPROVED); refundRequests.forEach(refundRequest -> { refundRequest.setStatus(PROCESSED); refundRequest.setTransactionHash(command.getTransactionHash()); }); refundRequestRepository.save(refundRequests); final Refund refund = Refund.builder() .requestId(command.getRequestId()) .funderAddress(command.getFunderAddress()) .blockchainEventId(command.getBlockchainEventId()) .requestedBy(resolveRequestedBy(command, refundRequests).orElse(null)) .tokenValue(TokenValue.builder() .amountInWei(new BigDecimal(command.getAmount())) .tokenAddress(command.getTokenHash()) .build()) .build(); refundRepository.save(refund); cacheManager.getCache ("funds").evict(command.getRequestId()); applicationEventPublisher.publishEvent(new RefundProcessedEvent(refund)); }
inOrder.verify(refundRepository).save(expected); inOrder.verify(fundsCache).evict(requestId); inOrder.verify(applicationEventPublisher).publishEvent(new RefundProcessedEvent(expected));
inOrder.verify(refundRepository).save(expected); inOrder.verify(fundsCache).evict(requestId); inOrder.verify(applicationEventPublisher).publishEvent(new RefundProcessedEvent(expected));
when(refundRepository.findAllByRequestId(requestId)).thenReturn(refunds); when(fundFundsByFunderAggregator.aggregate(same(funds))).thenReturn(fundsByFunder); when(refundFundsByFunderAggregator.aggregate(same(refunds))).thenReturn(refundsByFunder);
inOrder.verify(refundRepository).save(expected); inOrder.verify(fundsCache).evict(requestId); inOrder.verify(applicationEventPublisher).publishEvent(new RefundProcessedEvent(expected));