From 3121caf8f74d62f4e5223ed7b7d7c0a9dbfb7fd8 Mon Sep 17 00:00:00 2001 From: Piotr Dec Date: Wed, 22 May 2024 19:13:43 +0200 Subject: [PATCH] feat: POJO mappers --- .../eu/ztsh/wymiana/util/CurrencyMapper.java | 24 ++++++++++++++++ .../java/eu/ztsh/wymiana/util/UserMapper.java | 16 +++++++++++ .../eu/ztsh/wymiana/util/UserMapperTest.java | 28 +++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 src/main/java/eu/ztsh/wymiana/util/CurrencyMapper.java create mode 100644 src/main/java/eu/ztsh/wymiana/util/UserMapper.java create mode 100644 src/test/java/eu/ztsh/wymiana/util/UserMapperTest.java diff --git a/src/main/java/eu/ztsh/wymiana/util/CurrencyMapper.java b/src/main/java/eu/ztsh/wymiana/util/CurrencyMapper.java new file mode 100644 index 0000000..7542187 --- /dev/null +++ b/src/main/java/eu/ztsh/wymiana/util/CurrencyMapper.java @@ -0,0 +1,24 @@ +package eu.ztsh.wymiana.util; + +import eu.ztsh.wymiana.data.entity.CurrencyEntity; +import eu.ztsh.wymiana.model.Currency; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class CurrencyMapper { + + public static Currency entityToPojo(CurrencyEntity entity) { + return new Currency(entity.getSymbol(), entity.getAmount()); + } + + public static Map entitiesToPojoMap(List values) { + return values.stream().map(CurrencyMapper::entityToPojo) + .collect(Collectors.toMap(Currency::symbol, pojo -> pojo)); + } + + private CurrencyMapper() { + } + +} diff --git a/src/main/java/eu/ztsh/wymiana/util/UserMapper.java b/src/main/java/eu/ztsh/wymiana/util/UserMapper.java new file mode 100644 index 0000000..ea744f4 --- /dev/null +++ b/src/main/java/eu/ztsh/wymiana/util/UserMapper.java @@ -0,0 +1,16 @@ +package eu.ztsh.wymiana.util; + +import eu.ztsh.wymiana.data.entity.UserEntity; +import eu.ztsh.wymiana.model.User; + +public class UserMapper { + + public static User entityToPojo(UserEntity entity) { + return new User(entity.getName(), entity.getSurname(), entity.getPesel(), + CurrencyMapper.entitiesToPojoMap(entity.getCurrencies())); + } + + private UserMapper() { + } + +} diff --git a/src/test/java/eu/ztsh/wymiana/util/UserMapperTest.java b/src/test/java/eu/ztsh/wymiana/util/UserMapperTest.java new file mode 100644 index 0000000..7b97107 --- /dev/null +++ b/src/test/java/eu/ztsh/wymiana/util/UserMapperTest.java @@ -0,0 +1,28 @@ +package eu.ztsh.wymiana.util; + +import eu.ztsh.wymiana.EntityCreator; +import eu.ztsh.wymiana.model.Currency; +import eu.ztsh.wymiana.model.User; +import org.junit.jupiter.api.Test; + +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; + +class UserMapperTest { + + @Test + void entityToPojoTest() { + var entity = EntityCreator.user().build(); + var expected = new User( + EntityCreator.Constants.NAME, + EntityCreator.Constants.SURNAME, + EntityCreator.Constants.PESEL, + Map.of("PLN", new Currency("PLN", EntityCreator.Constants.PLN)) + ); + assertThat(UserMapper.entityToPojo(entity)) + .usingRecursiveComparison() + .isEqualTo(expected); + } + +}