fix: exchange method fixes
This commit is contained in:
parent
c87bcc8b54
commit
71109174f7
2 changed files with 73 additions and 13 deletions
|
@ -29,8 +29,8 @@ class CurrencyServiceTest extends RepositoryBasedTest {
|
|||
public CurrencyServiceTest(UserRepository userRepository, InstanceValidator instanceValidator) {
|
||||
super(userRepository);
|
||||
var nbp = Mockito.mock(NbpService.class);
|
||||
Mockito.when(nbp.getSellRate("USD")).thenReturn(USD_SELL);
|
||||
Mockito.when(nbp.getBuyRate("USD")).thenReturn(USD_BUY);
|
||||
Mockito.when(nbp.getSellRate("USD")).thenReturn(SELL_RATE);
|
||||
Mockito.when(nbp.getBuyRate("USD")).thenReturn(BUY_RATE);
|
||||
currencyService = new CurrencyService(new UserService(userRepository, instanceValidator), nbp, instanceValidator);
|
||||
}
|
||||
|
||||
|
@ -65,10 +65,11 @@ class CurrencyServiceTest extends RepositoryBasedTest {
|
|||
var expected = EntityCreator.user().pln(0).usd(USD_BUY).build();
|
||||
expect(expected);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Test
|
||||
void usdToPlnToSellSuccessTest() {
|
||||
var entity = EntityCreator.user().build();
|
||||
var entity = EntityCreator.user().pln(0).usd(USD_SELL).build();
|
||||
userRepository.save(entity);
|
||||
var result = currencyService.exchange(EntityCreator.exchangeRequest()
|
||||
.from(USD_SYMBOL)
|
||||
|
@ -84,7 +85,7 @@ class CurrencyServiceTest extends RepositoryBasedTest {
|
|||
@Transactional
|
||||
@Test
|
||||
void usdToPlnToBuySuccessTest() {
|
||||
var entity = EntityCreator.user().build();
|
||||
var entity = EntityCreator.user().pln(0).usd(USD_SELL).build();
|
||||
userRepository.save(entity);
|
||||
var result = currencyService.exchange(EntityCreator.exchangeRequest()
|
||||
.from(USD_SYMBOL)
|
||||
|
@ -97,14 +98,57 @@ class CurrencyServiceTest extends RepositoryBasedTest {
|
|||
expect(expected);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Test
|
||||
void usdToPlnNoUsdCurrencyTest() {
|
||||
var entity = EntityCreator.user().build();
|
||||
userRepository.save(entity);
|
||||
var request = EntityCreator.exchangeRequest()
|
||||
.from(USD_SYMBOL)
|
||||
.to(PLN_SYMBOL)
|
||||
.toBuy(PLN)
|
||||
.build();
|
||||
assertThatThrownBy(() -> currencyService.exchange(request))
|
||||
.isInstanceOf(InsufficientFundsException.class);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Test
|
||||
void doubleExchangeTest() {
|
||||
var initialValue = 100;
|
||||
var entity = EntityCreator.user().pln(initialValue).build();
|
||||
userRepository.save(entity);
|
||||
var result1 = currencyService.exchange(EntityCreator.exchangeRequest()
|
||||
.from(PLN_SYMBOL)
|
||||
.to(USD_SYMBOL)
|
||||
.toBuy(USD_BUY)
|
||||
.build());
|
||||
var result2 = currencyService.exchange(EntityCreator.exchangeRequest()
|
||||
.from(USD_SYMBOL)
|
||||
.to(PLN_SYMBOL)
|
||||
.toSell(USD_BUY)
|
||||
.build());
|
||||
var resultOptional = userRepository.findById(entity.getPesel());
|
||||
assertThat(resultOptional)
|
||||
.isNotEmpty();
|
||||
var resultEntity = resultOptional.get();
|
||||
assertThat(resultEntity.getCurrencies()
|
||||
.stream()
|
||||
.filter(c -> c.getSymbol().equalsIgnoreCase("PLN"))
|
||||
.findFirst()).isNotEmpty().get().matches(currencyEntity -> currencyEntity.getAmount() < initialValue);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Test
|
||||
void insufficientFundsTest() {
|
||||
var entity = EntityCreator.exchangeRequest()
|
||||
var entity = EntityCreator.user().build();
|
||||
userRepository.save(entity);
|
||||
var request = EntityCreator.exchangeRequest()
|
||||
.from(PLN_SYMBOL)
|
||||
.to(USD_SYMBOL)
|
||||
.toBuy(PLN)
|
||||
.build();
|
||||
assertThatThrownBy(() -> currencyService.exchange(entity))
|
||||
assertThatThrownBy(() -> currencyService.exchange(request))
|
||||
.isInstanceOf(InsufficientFundsException.class);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue