diff --git a/src/main/java/eu/ztsh/wymiana/service/UserService.java b/src/main/java/eu/ztsh/wymiana/service/UserService.java index e5b26f6..f9e7cde 100644 --- a/src/main/java/eu/ztsh/wymiana/service/UserService.java +++ b/src/main/java/eu/ztsh/wymiana/service/UserService.java @@ -31,7 +31,7 @@ public class UserService { } public User update(User user) { - throw new UnsupportedOperationException("Not implemented yet"); + return UserMapper.entityToPojo(userRepository.save(UserMapper.pojoToEntity(user))); } } diff --git a/src/main/java/eu/ztsh/wymiana/util/CurrencyMapper.java b/src/main/java/eu/ztsh/wymiana/util/CurrencyMapper.java index 7542187..b962ddc 100644 --- a/src/main/java/eu/ztsh/wymiana/util/CurrencyMapper.java +++ b/src/main/java/eu/ztsh/wymiana/util/CurrencyMapper.java @@ -13,11 +13,19 @@ public class CurrencyMapper { return new Currency(entity.getSymbol(), entity.getAmount()); } + public static CurrencyEntity pojoToEntity(Currency pojo, String pesel) { + return new CurrencyEntity(pesel, pojo.symbol(), pojo.amount()); + } + public static Map entitiesToPojoMap(List values) { return values.stream().map(CurrencyMapper::entityToPojo) .collect(Collectors.toMap(Currency::symbol, pojo -> pojo)); } + public static List pojoMapToEntities(Map currencies, String pesel) { + return currencies.values().stream().map(entry -> pojoToEntity(entry, pesel)).toList(); + } + private CurrencyMapper() { } diff --git a/src/main/java/eu/ztsh/wymiana/util/UserMapper.java b/src/main/java/eu/ztsh/wymiana/util/UserMapper.java index b4aff44..39985fb 100644 --- a/src/main/java/eu/ztsh/wymiana/util/UserMapper.java +++ b/src/main/java/eu/ztsh/wymiana/util/UserMapper.java @@ -14,6 +14,11 @@ public class UserMapper { CurrencyMapper.entitiesToPojoMap(entity.getCurrencies())); } + public static UserEntity pojoToEntity(User pojo) { + return new UserEntity(pojo.pesel(), pojo.name(), pojo.surname(), + CurrencyMapper.pojoMapToEntities(pojo.currencies(), pojo.pesel())); + } + public static UserEntity requestToEntity(UserCreateRequest request) { return new UserEntity(request.pesel(), request.name(), request.surname(), List.of(new CurrencyEntity(request.pesel(), "PLN", request.pln()))); diff --git a/src/test/java/eu/ztsh/wymiana/EntityCreator.java b/src/test/java/eu/ztsh/wymiana/EntityCreator.java index df78b20..c0bb186 100644 --- a/src/test/java/eu/ztsh/wymiana/EntityCreator.java +++ b/src/test/java/eu/ztsh/wymiana/EntityCreator.java @@ -62,8 +62,8 @@ public class EntityCreator { String name; String surname; String pesel; - double pln; - double usd; + double pln = -1; + double usd = -1; public UserEntityBuilder name(String name) { this.name = name; @@ -93,10 +93,10 @@ public class EntityCreator { public UserEntity build() { var nonnulPesel = Optional.ofNullable(pesel).orElse(Constants.PESEL); List currencies = new ArrayList<>(); - if (pln > 0) { + if (pln > -1) { currencies.add(new CurrencyEntity(nonnulPesel, "PLN", pln)); } - if (usd > 0) { + if (usd > -1) { currencies.add(new CurrencyEntity(nonnulPesel, "USD", usd)); } if (currencies.isEmpty()) { diff --git a/src/test/java/eu/ztsh/wymiana/service/CurrencyServiceTest.java b/src/test/java/eu/ztsh/wymiana/service/CurrencyServiceTest.java index cc640a0..95b1442 100644 --- a/src/test/java/eu/ztsh/wymiana/service/CurrencyServiceTest.java +++ b/src/test/java/eu/ztsh/wymiana/service/CurrencyServiceTest.java @@ -69,7 +69,7 @@ class CurrencyServiceTest extends RepositoryBasedTest { @Transactional @Test void usdToPlnToSellSuccessTest() { - var entity = EntityCreator.user().pln(0).usd(USD_SELL).build(); + var entity = EntityCreator.user().pln(-1).usd(USD_SELL).build(); userRepository.save(entity); var result = currencyService.exchange(EntityCreator.exchangeRequest() .from(USD_SYMBOL) @@ -85,7 +85,7 @@ class CurrencyServiceTest extends RepositoryBasedTest { @Transactional @Test void usdToPlnToBuySuccessTest() { - var entity = EntityCreator.user().pln(0).usd(USD_SELL).build(); + var entity = EntityCreator.user().pln(-1).usd(USD_SELL).build(); userRepository.save(entity); var result = currencyService.exchange(EntityCreator.exchangeRequest() .from(USD_SYMBOL) diff --git a/src/test/java/eu/ztsh/wymiana/util/UserMapperTest.java b/src/test/java/eu/ztsh/wymiana/util/UserMapperTest.java index 0479332..0b4a7d9 100644 --- a/src/test/java/eu/ztsh/wymiana/util/UserMapperTest.java +++ b/src/test/java/eu/ztsh/wymiana/util/UserMapperTest.java @@ -25,6 +25,20 @@ class UserMapperTest { .isEqualTo(expected); } + @Test + void pojoToEntityTest() { + var entity = new User( + EntityCreator.Constants.NAME, + EntityCreator.Constants.SURNAME, + EntityCreator.Constants.PESEL, + Map.of("PLN", new Currency("PLN", EntityCreator.Constants.PLN)) + ); + var expected = EntityCreator.user().build(); + assertThat(UserMapper.pojoToEntity(entity)) + .usingRecursiveComparison() + .isEqualTo(expected); + } + @Test void requestToEntityTest() { var request = EntityCreator.userRequest().build();