diff --git a/core/src/test/java/cz/muni/fi/pa165/core/manufacturer/UnitTestManufacturerJPA.java b/core/src/test/java/cz/muni/fi/pa165/core/manufacturer/UnitTestManufacturerJPA.java new file mode 100644 index 0000000000000000000000000000000000000000..bec00b99af94dda933f75f5c5bc497f7941f429f --- /dev/null +++ b/core/src/test/java/cz/muni/fi/pa165/core/manufacturer/UnitTestManufacturerJPA.java @@ -0,0 +1,149 @@ +package cz.muni.fi.pa165.core.manufacturer; + +import cz.muni.fi.pa165.core.device.Device; +import cz.muni.fi.pa165.core.device.DeviceRepository; +import cz.muni.fi.pa165.core.house.HouseRepository; +import cz.muni.fi.pa165.core.smartmeter.SmartMeterRepository; +import cz.muni.fi.pa165.core.user.UserRepository; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.List; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + +import static org.assertj.core.api.Assertions.assertThat; + +@RunWith(SpringRunner.class) +@DataJpaTest +public class UnitTestManufacturerJPA { + @Autowired + private TestEntityManager entityManager; + @Autowired + private HouseRepository houseRepository; + @Autowired + private SmartMeterRepository smartMeterRepository; + @Autowired + private UserRepository userRepository; + + @Autowired + private ManufacturerRepository manufacturerRepository; + + @Autowired + private DeviceRepository deviceRepository; + + @Test + public void createTesting() throws Exception { + String manufacturer = this.entityManager.persistAndGetId(new Manufacturer()).toString(); + // Regular expression to match UUID format + Pattern uuidPattern = Pattern.compile( + "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + Pattern.CASE_INSENSITIVE); + // Check if the string matches the UUID format + boolean isUUID = uuidPattern.matcher(manufacturer).matches(); + assertThat(isUUID).isTrue(); + } + + @Test + public void shouldFindNoneIfRepositoryIsEmpty() { + Iterable<Manufacturer> manufacturers = manufacturerRepository.findAll(); + assertThat(manufacturers).isEmpty(); + } + + private Manufacturer helperRegister() { + Iterable<Device> deviceIterable; + deviceIterable = deviceRepository.saveAll(List.of(new Device(), new Device(), new Device())); + List<Device> list = StreamSupport.stream(deviceIterable.spliterator(), false) + .collect(Collectors.toList()); + return manufacturerRepository.save(new Manufacturer("Manufacturer1", list)); + } + + @Test + public void shouldStore() { + Manufacturer manufacturer = helperRegister(); + + assertThat(manufacturer).hasFieldOrPropertyWithValue("name", "Manufacturer1"); + } + + @Test + public void shouldFindAll() { + Manufacturer m = new Manufacturer(); + entityManager.persist(m); + + Manufacturer m1 = new Manufacturer(); + entityManager.persist(m1); + + Manufacturer m2 = new Manufacturer(); + entityManager.persist(m2); + + assertThat(manufacturerRepository.findAll()).hasSize(3).contains(m, m1, m2); + } + + @Test + public void shouldFindById() { + Manufacturer m = new Manufacturer(); + entityManager.persist(m); + + Manufacturer m1 = new Manufacturer(); + entityManager.persist(m1); + + Manufacturer m2 = new Manufacturer(); + entityManager.persist(m2); + + Manufacturer found = manufacturerRepository.findById(m.getId()).get(); + + assertThat(found).isEqualTo(m); + + found = manufacturerRepository.findById(m.getId()).get(); + + assertThat(found).isEqualTo(m); + } + + @Test + public void shouldUpdateById() { + Manufacturer m = new Manufacturer(); + entityManager.persist(m); + + Manufacturer m1 = new Manufacturer(); + entityManager.persist(m1); + + Manufacturer update = manufacturerRepository.findById(m.getId()).get(); + update.setName("New name"); + manufacturerRepository.save(update); + + Manufacturer check = manufacturerRepository.findById(m.getId()).get(); + + assertThat(check.getId()).isEqualTo(m.getId()); + assertThat(check.getName()).isEqualTo(m.getName()); + } + + @Test + public void shouldDeleteById() { + Manufacturer m = new Manufacturer(); + entityManager.persist(m); + + Manufacturer m1 = new Manufacturer(); + entityManager.persist(m1); + + manufacturerRepository.deleteById(m.getId()); + + assertThat(manufacturerRepository.findAll()).hasSize(1).contains(m1); + assertThat(manufacturerRepository.findAll()).hasSize(1).doesNotContain(m); + } + + @Test + public void shouldDeleteAll() { + entityManager.persist(helperRegister()); + entityManager.persist(helperRegister()); + + manufacturerRepository.deleteAll(); + + assertThat(manufacturerRepository.findAll()).isEmpty(); + } +} + diff --git a/core/src/test/java/cz/muni/fi/pa165/core/smartmeter/UnitTestSmartMeterJPA.java b/core/src/test/java/cz/muni/fi/pa165/core/smartmeter/UnitTestSmartMeterJPA.java new file mode 100644 index 0000000000000000000000000000000000000000..fff444c493efde0d2816f70508d465699e674b94 --- /dev/null +++ b/core/src/test/java/cz/muni/fi/pa165/core/smartmeter/UnitTestSmartMeterJPA.java @@ -0,0 +1,153 @@ +package cz.muni.fi.pa165.core.smartmeter; + +import cz.muni.fi.pa165.core.device.Device; +import cz.muni.fi.pa165.core.device.DeviceRepository; +import cz.muni.fi.pa165.core.house.House; +import cz.muni.fi.pa165.core.house.HouseRepository; +import cz.muni.fi.pa165.core.metrics.Metrics; +import cz.muni.fi.pa165.core.metrics.MetricsRepository; +import cz.muni.fi.pa165.core.user.UserRepository; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.List; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + +import static org.assertj.core.api.Assertions.assertThat; + +@RunWith(SpringRunner.class) +@DataJpaTest +public class UnitTestSmartMeterJPA { + @Autowired + private TestEntityManager entityManager; + @Autowired + private HouseRepository houseRepository; + @Autowired + private SmartMeterRepository smartMeterRepository; + @Autowired + private UserRepository userRepository; + + @Autowired + private DeviceRepository deviceRepository; + @Autowired + private MetricsRepository metricsRepository; + + @Test + public void createTesting() throws Exception { + String m = this.entityManager.persistAndGetId(new SmartMeter()).toString(); + // Regular expression to match UUID format + Pattern uuidPattern = Pattern.compile( + "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + Pattern.CASE_INSENSITIVE); + // Check if the string matches the UUID format + boolean isUUID = uuidPattern.matcher(m).matches(); + assertThat(isUUID).isTrue(); + } + + @Test + public void shouldFindNoneIfRepositoryIsEmpty() { + Iterable<SmartMeter> m = smartMeterRepository.findAll(); + assertThat(m).isEmpty(); + } + + private SmartMeter helperRegister() { + Iterable<Metrics> metrics; + metrics = metricsRepository.saveAll(List.of(new Metrics(), new Metrics(), new Metrics())); + List<Metrics> list = StreamSupport.stream(metrics.spliterator(), false) + .collect(Collectors.toList()); + Device device = deviceRepository.save(new Device()); + House house = houseRepository.save(new House()); + return smartMeterRepository.save(new SmartMeter("OneT Tesla 1232", device, house, list)); + } + + @Test + public void shouldStore() { + SmartMeter smartMeter = helperRegister(); + + assertThat(smartMeter).hasFieldOrPropertyWithValue("name", "OneT Tesla 1232"); + } + + @Test + public void shouldFindAll() { + SmartMeter m = new SmartMeter(); + entityManager.persist(m); + + SmartMeter m1 = new SmartMeter(); + entityManager.persist(m1); + + SmartMeter m2 = new SmartMeter(); + entityManager.persist(m2); + + assertThat(smartMeterRepository.findAll()).hasSize(3).contains(m, m1, m2); + } + + @Test + public void shouldFindById() { + SmartMeter m = new SmartMeter(); + entityManager.persist(m); + + SmartMeter m1 = new SmartMeter(); + entityManager.persist(m1); + + SmartMeter m2 = new SmartMeter(); + entityManager.persist(m2); + + SmartMeter found = smartMeterRepository.findById(m.getId()).get(); + + assertThat(found).isEqualTo(m); + + found = smartMeterRepository.findById(m.getId()).get(); + + assertThat(found).isEqualTo(m); + } + + @Test + public void shouldUpdateById() { + SmartMeter m = new SmartMeter(); + entityManager.persist(m); + + SmartMeter m1 = new SmartMeter(); + entityManager.persist(m1); + + SmartMeter update = smartMeterRepository.findById(m.getId()).get(); + update.setName("New name"); + smartMeterRepository.save(update); + + SmartMeter check = smartMeterRepository.findById(m.getId()).get(); + + assertThat(check.getId()).isEqualTo(m.getId()); + assertThat(check.getName()).isEqualTo(m.getName()); + } + + @Test + public void shouldDeleteById() { + SmartMeter m = new SmartMeter(); + entityManager.persist(m); + + SmartMeter m1 = new SmartMeter(); + entityManager.persist(m1); + + smartMeterRepository.deleteById(m.getId()); + + assertThat(smartMeterRepository.findAll()).hasSize(1).contains(m1); + assertThat(smartMeterRepository.findAll()).hasSize(1).doesNotContain(m); + } + + @Test + public void shouldDeleteAll() { + entityManager.persist(helperRegister()); + entityManager.persist(helperRegister()); + + smartMeterRepository.deleteAll(); + + assertThat(smartMeterRepository.findAll()).isEmpty(); + } +} + +