public List<ExchangeCurrencyRate> getAllExchangeCurrencyRates(CurrencyType currencyType) { List<ExchangeCurrencyRate> allExchangeCurrencyRates = new ArrayList<>(); getExchangeEntryRates().stream().forEach((exchangeEntryRate) -> { allExchangeCurrencyRates.addAll(exchangeEntryRate.getExchangeCurrencyRates() .stream() .filter((currencyRate) -> currencyRate.getCurrencyType() == currencyType) .collect(Collectors.toList()) ); }); return allExchangeCurrencyRates; }
private boolean checkIfExchangeIsPresent(List<ExchangeAggregateRate> rates, ExchangeType exchangeType) { return rates.stream().anyMatch((aggregateRate) -> { return aggregateRate.getExchangeEntryRates().stream().anyMatch((entry) -> { return entry.getExchangeType() == exchangeType; }); }); }
private boolean checkIfCurrencyIsPresent(List<ExchangeAggregateRate> rates, CurrencyType currencyType) { return rates.stream().anyMatch((aggregateRate) -> { return aggregateRate.getExchangeEntryRates().stream().anyMatch((entry) -> { return entry.getExchangeCurrencyRates().stream().anyMatch((currency) -> { return currency.getCurrencyType() == currencyType; }); }); }); }
@Test public void testFindBlockNrBtcGreaterThan_HavingMultipleExchanges() { createExchangeAggregateRateWithMultipleExchangeEntry(ExchangeType.BITSTAMP, ExchangeType.KRAKEN); Optional<ExchangeAggregateRate> optionalAggregateRate = aggregateRateRepository .findFirstOptionalByBlockNrBtcLessThanEqualOrderByBlockNrBtcDesc(new Long(1)); assertTrue(optionalAggregateRate.filter((aggRate) -> aggRate.getExchangeEntryRates().stream() .anyMatch((exRate) -> exRate.getExchangeType() == ExchangeType.BITSTAMP) ).isPresent() ); assertTrue(optionalAggregateRate.filter((aggRate) -> aggRate.getExchangeEntryRates().stream() .anyMatch((exRate) -> exRate.getExchangeType() == ExchangeType.KRAKEN) ).isPresent() ); assertTrue(optionalAggregateRate.filter((aggRate) -> aggRate.getExchangeAggregateCurrencyRates().stream() .anyMatch((aggregateCurrencyRate) -> aggregateCurrencyRate.getCurrencyType() == CurrencyType.BTC) ).isPresent() ); assertTrue(optionalAggregateRate.filter((aggRate) -> aggRate.getExchangeAggregateCurrencyRates().stream() .anyMatch((aggregateCurrencyRate) -> aggregateCurrencyRate.getCurrencyType() == CurrencyType.ETH) ).isPresent() ); }
@Test public void testFetchRates() { exchangeRateService.fetchRates(); List<ExchangeAggregateRate> all = exchangeAggregateRateRepository.findAllByOrderByCreationDate(); assertTrue(all.stream().anyMatch((aggregateRate) -> aggregateRate.getExchangeEntryRates().size() > 0)); assertTrue(checkIfExchangeIsPresent(all, ExchangeType.BITFINEX)); assertTrue(checkIfExchangeIsPresent(all, ExchangeType.BITSTAMP)); assertTrue(checkIfExchangeIsPresent(all, ExchangeType.KRAKEN)); assertTrue(checkIfExchangeIsPresent(all, ExchangeType.GDAX)); assertTrue(checkIfExchangeIsPresent(all, ExchangeType.COINMARKETCAP)); assertTrue(checkIfCurrencyIsPresent(all, CurrencyType.ETH)); assertTrue(checkIfCurrencyIsPresent(all, CurrencyType.BTC)); }