diff --git a/src/test/java/eu/ztsh/wymiana/service/CurrencyServiceTest.java b/src/test/java/eu/ztsh/wymiana/service/CurrencyServiceTest.java index c49396c..c64e9b2 100644 --- a/src/test/java/eu/ztsh/wymiana/service/CurrencyServiceTest.java +++ b/src/test/java/eu/ztsh/wymiana/service/CurrencyServiceTest.java @@ -5,10 +5,17 @@ import eu.ztsh.wymiana.RepositoryBasedTest; import eu.ztsh.wymiana.data.repository.UserRepository; import eu.ztsh.wymiana.exception.InsufficientFundsException; import eu.ztsh.wymiana.validation.InstanceValidator; +import eu.ztsh.wymiana.validation.ValidationFailedException; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; +import java.util.stream.Stream; + import static eu.ztsh.wymiana.EntityCreator.Constants.*; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -27,7 +34,7 @@ class CurrencyServiceTest extends RepositoryBasedTest { } @Test - void successTest() { + void toSellSuccessTest() { var result = currencyService.exchange(EntityCreator.exchangeRequest() .from(PLN_SYMBOL) .to(USD_SYMBOL) @@ -35,6 +42,21 @@ class CurrencyServiceTest extends RepositoryBasedTest { .build()); assertThat(result.currencies()) .matches(map -> map.get(PLN_SYMBOL).amount() == 0 && map.get(USD_SYMBOL).amount() == USD_BUY); + var expected = EntityCreator.user().pln(0).usd(USD_BUY).build(); + expect(expected); + } + + @Test + void toBuySuccessTest() { + var result = currencyService.exchange(EntityCreator.exchangeRequest() + .from(PLN_SYMBOL) + .to(USD_SYMBOL) + .toBuy(USD_BUY) + .build()); + assertThat(result.currencies()) + .matches(map -> map.get(PLN_SYMBOL).amount() == 0 && map.get(USD_SYMBOL).amount() == USD_BUY); + var expected = EntityCreator.user().pln(0).usd(USD_BUY).build(); + expect(expected); } @Test @@ -47,4 +69,41 @@ class CurrencyServiceTest extends RepositoryBasedTest { .isInstanceOf(InsufficientFundsException.class); } + @DisplayName("Invalid PESEL value") + @ParameterizedTest + @MethodSource + void invalidPeselTest(String pesel) { + assertThatThrownBy(() -> currencyService.exchange(EntityCreator.exchangeRequest() + .pesel(pesel) + .from(PLN_SYMBOL) + .to(USD_SYMBOL) + .toSell(USD_SELL) + .build())) + .isInstanceOf(ValidationFailedException.class); + } + + @Test + @DisplayName("Empty 'from' value") + void emptyFromTest() { + assertThatThrownBy(() -> currencyService.exchange(EntityCreator.exchangeRequest() + .to(USD_SYMBOL) + .toSell(USD_SELL) + .build())) + .isInstanceOf(ValidationFailedException.class); + } + + @Test + @DisplayName("Empty 'to' value") + void emptyToTest() { + assertThatThrownBy(() -> currencyService.exchange(EntityCreator.exchangeRequest() + .from(PLN_SYMBOL) + .toSell(USD_SELL) + .build())) + .isInstanceOf(ValidationFailedException.class); + } + + private static Stream invalidPeselTest() { + return Stream.of("INVALID", PESEL.replace('6', '7')); + } + } diff --git a/src/test/java/eu/ztsh/wymiana/validation/ValidExchangeRequestValidatorTest.java b/src/test/java/eu/ztsh/wymiana/validation/ValidExchangeRequestValidatorTest.java index 85161e6..3a3a4d1 100644 --- a/src/test/java/eu/ztsh/wymiana/validation/ValidExchangeRequestValidatorTest.java +++ b/src/test/java/eu/ztsh/wymiana/validation/ValidExchangeRequestValidatorTest.java @@ -38,19 +38,6 @@ class ValidExchangeRequestValidatorTest extends ValidatorTest invalidPeselTest() { - return Stream.of("INVALID", PESEL.replace('6', '7')); - } - }