	@Test
	public void assertExchange() {

		String debitCurrency = "USD";
		BigDecimal debitAmount = BigDecimal.valueOf(800d);
		String creditCurrency = "BTC";

		BigDecimal askPrice = BigDecimal.valueOf(8222.21d);
		BigDecimal bidPrice = BigDecimal.valueOf(8219.04d);
		BigDecimal initialCreditCurrencyBalance = BigDecimal.valueOf(0.2d);

		BigDecimal expectedCreditAmount = debitAmount.divide(askPrice, 5, RoundingMode.HALF_UP);

		Mockito.when(balanceStore.get(ACCOUNT + "-" + creditCurrency)).thenReturn(
				new AccountCurrencyBalance(new AccountCurrency(ACCOUNT, creditCurrency), initialCreditCurrencyBalance));

		Mockito.when(rateStore.get(debitCurrency + "-" + creditCurrency)).thenReturn(new ExchangeRate(debitCurrency,
				creditCurrency, askPrice, bidPrice, LocalDateTime.now().toEpochSecond(ZoneOffset.UTC)));

		Transaction transaction = new Transaction(UUID.randomUUID().toString(), ACCOUNT, Type.EXCHANGE, debitAmount,
				debitCurrency, null, creditCurrency);

		OperationResult operationResult = operationCreditTransformer.transform(transaction);

		Assertions.assertEquals(0, expectedCreditAmount.compareTo(operationResult.getTransaction().getCreditAmount()));
		Assertions.assertEquals(0, initialCreditCurrencyBalance.add(expectedCreditAmount)
				.compareTo(operationResult.getAccountCurrencyBalance().getBalance()));
	}