Loading core/src/test/java/cz/muni/fi/pa165/core/metrics/MetricsServiceTest.java +417 −15 Original line number Diff line number Diff line package cz.muni.fi.pa165.core.metrics; import cz.muni.fi.pa165.core.device.DeviceRepository; import cz.muni.fi.pa165.core.device.DeviceService; import org.junit.jupiter.api.AfterEach; import cz.muni.fi.pa165.core.company.Company; import cz.muni.fi.pa165.core.device.Device; import cz.muni.fi.pa165.core.house.House; import cz.muni.fi.pa165.core.smartmeter.SmartMeter; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import java.time.LocalDateTime; import java.util.List; import java.util.Optional; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.MockitoAnnotations.openMocks; class MetricsServiceTest { @Test void create() { @InjectMocks private MetricsService metricsService; @Mock private MetricsRepository metricsRepository; @BeforeEach void init() { openMocks(this); } @Test void findAllPageable() { void shouldCreate() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); when(metricsRepository.save(metrics)).thenReturn(metrics); Metrics createdMetrics = metricsService.create(metrics); verify(metricsRepository).save(metrics); assertThat(createdMetrics).isEqualTo(metrics); } @Test void findAll() { void shouldFindAllPageable() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics1 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); Metrics metrics2 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,2,20,0)) .build(); Page<Metrics> page = new PageImpl<>(List.of(metrics1, metrics2)); int pageNumber = 0; int pageSize = 10; when(metricsRepository.findAll(PageRequest.of(pageNumber, pageSize))).thenReturn(page); Page<Metrics> result = metricsService.findAllPageable(PageRequest.of(pageNumber, pageSize)); verify(metricsRepository).findAll(PageRequest.of(pageNumber, pageSize)); assertThat(result).containsExactlyInAnyOrder(metrics1, metrics2); } @Test void findAllPageableInt() { void shouldFindAll() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics1 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); Metrics metrics2 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,2,20,0)) .build(); var data = List.of(metrics1, metrics2); when(metricsRepository.findAll()).thenReturn(data); List<Metrics> result = metricsService.findAll(); verify(metricsRepository).findAll(); assertEquals(data, result); } @Test void findById() { void shouldFindAllPageableInt() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics1 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); Metrics metrics2 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,2,20,0)) .build(); Page<Metrics> page = new PageImpl<>(List.of(metrics1, metrics2)); int pageNumber = 0; int pageSize = 10; when(metricsRepository.findAll(PageRequest.of(pageNumber, pageSize))).thenReturn(page); Page<Metrics> result = metricsService.findAllPageableInt(pageNumber); verify(metricsRepository).findAll(PageRequest.of(pageNumber, pageSize)); assertThat(result).containsExactlyInAnyOrder(metrics1, metrics2); } @Test void deleteAll() { void shouldFindById() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); when(metricsRepository.findById(metrics.getId())).thenReturn(Optional.of(metrics)); Metrics result = metricsService.findById(metrics.getId()); verify(metricsRepository).findById(metrics.getId()); assertEquals(metrics, result); } @Test void deleteAllById() { void shouldDeleteAll() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics1 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); Metrics metrics2 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,2,20,0)) .build(); var data = List.of(metrics1, metrics2); when(metricsRepository.findAll()).thenReturn(data); metricsService.deleteAll(); verify(metricsRepository).findAll(); verify(metricsRepository).saveAll(data); } @Test void deleteById() { void shouldDeleteAllById() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics1 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); Metrics metrics2 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,2,20,0)) .build(); String[] ids = {metrics1.getId(), metrics2.getId()}; when(metricsRepository.findById(ids[0])).thenReturn(Optional.of(metrics1)); when(metricsRepository.findById(ids[1])).thenReturn(Optional.of(metrics2)); metricsService.deleteAllById(ids); verify(metricsRepository).save(metrics1); verify(metricsRepository).save(metrics2); } @Test void update() { void shouldDeleteById() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics1 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); when(metricsRepository.findById(metrics1.getId())).thenReturn(Optional.of(metrics1)); Metrics deletedMetrics = metricsService.deleteById(metrics1.getId()); verify(metricsRepository).findById(metrics1.getId()); verify(metricsRepository).save(metrics1); // soft delete assertNotNull(deletedMetrics.getDeletedDateTime()); assertEquals(metrics1, deletedMetrics); } @Test void hardDeleteAll() { void shouldUpdate() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics originalMetrics = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); Metrics updatedMetrics = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(300.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); when(metricsRepository.findById(originalMetrics.getId())).thenReturn(Optional.of(originalMetrics)); when(metricsRepository.save(updatedMetrics)).thenReturn(updatedMetrics); Metrics result = metricsService.update(updatedMetrics, originalMetrics.getId()); verify(metricsRepository).findById(originalMetrics.getId()); verify(metricsRepository).save(updatedMetrics); assertEquals(originalMetrics.getId(), result.getId()); assertEquals(updatedMetrics.getConsumptionKWH(), result.getConsumptionKWH()); assertEquals(updatedMetrics.getSmartMeter().getName(), result.getSmartMeter().getName()); } @Test void getRepository() { void shouldHardDeleteAll() { metricsService.hardDeleteAll(); verify(metricsRepository).deleteAll(); } Loading Loading
core/src/test/java/cz/muni/fi/pa165/core/metrics/MetricsServiceTest.java +417 −15 Original line number Diff line number Diff line package cz.muni.fi.pa165.core.metrics; import cz.muni.fi.pa165.core.device.DeviceRepository; import cz.muni.fi.pa165.core.device.DeviceService; import org.junit.jupiter.api.AfterEach; import cz.muni.fi.pa165.core.company.Company; import cz.muni.fi.pa165.core.device.Device; import cz.muni.fi.pa165.core.house.House; import cz.muni.fi.pa165.core.smartmeter.SmartMeter; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import java.time.LocalDateTime; import java.util.List; import java.util.Optional; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.MockitoAnnotations.openMocks; class MetricsServiceTest { @Test void create() { @InjectMocks private MetricsService metricsService; @Mock private MetricsRepository metricsRepository; @BeforeEach void init() { openMocks(this); } @Test void findAllPageable() { void shouldCreate() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); when(metricsRepository.save(metrics)).thenReturn(metrics); Metrics createdMetrics = metricsService.create(metrics); verify(metricsRepository).save(metrics); assertThat(createdMetrics).isEqualTo(metrics); } @Test void findAll() { void shouldFindAllPageable() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics1 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); Metrics metrics2 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,2,20,0)) .build(); Page<Metrics> page = new PageImpl<>(List.of(metrics1, metrics2)); int pageNumber = 0; int pageSize = 10; when(metricsRepository.findAll(PageRequest.of(pageNumber, pageSize))).thenReturn(page); Page<Metrics> result = metricsService.findAllPageable(PageRequest.of(pageNumber, pageSize)); verify(metricsRepository).findAll(PageRequest.of(pageNumber, pageSize)); assertThat(result).containsExactlyInAnyOrder(metrics1, metrics2); } @Test void findAllPageableInt() { void shouldFindAll() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics1 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); Metrics metrics2 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,2,20,0)) .build(); var data = List.of(metrics1, metrics2); when(metricsRepository.findAll()).thenReturn(data); List<Metrics> result = metricsService.findAll(); verify(metricsRepository).findAll(); assertEquals(data, result); } @Test void findById() { void shouldFindAllPageableInt() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics1 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); Metrics metrics2 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,2,20,0)) .build(); Page<Metrics> page = new PageImpl<>(List.of(metrics1, metrics2)); int pageNumber = 0; int pageSize = 10; when(metricsRepository.findAll(PageRequest.of(pageNumber, pageSize))).thenReturn(page); Page<Metrics> result = metricsService.findAllPageableInt(pageNumber); verify(metricsRepository).findAll(PageRequest.of(pageNumber, pageSize)); assertThat(result).containsExactlyInAnyOrder(metrics1, metrics2); } @Test void deleteAll() { void shouldFindById() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); when(metricsRepository.findById(metrics.getId())).thenReturn(Optional.of(metrics)); Metrics result = metricsService.findById(metrics.getId()); verify(metricsRepository).findById(metrics.getId()); assertEquals(metrics, result); } @Test void deleteAllById() { void shouldDeleteAll() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics1 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); Metrics metrics2 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,2,20,0)) .build(); var data = List.of(metrics1, metrics2); when(metricsRepository.findAll()).thenReturn(data); metricsService.deleteAll(); verify(metricsRepository).findAll(); verify(metricsRepository).saveAll(data); } @Test void deleteById() { void shouldDeleteAllById() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics1 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); Metrics metrics2 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,2,20,0)) .build(); String[] ids = {metrics1.getId(), metrics2.getId()}; when(metricsRepository.findById(ids[0])).thenReturn(Optional.of(metrics1)); when(metricsRepository.findById(ids[1])).thenReturn(Optional.of(metrics2)); metricsService.deleteAllById(ids); verify(metricsRepository).save(metrics1); verify(metricsRepository).save(metrics2); } @Test void update() { void shouldDeleteById() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics metrics1 = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); when(metricsRepository.findById(metrics1.getId())).thenReturn(Optional.of(metrics1)); Metrics deletedMetrics = metricsService.deleteById(metrics1.getId()); verify(metricsRepository).findById(metrics1.getId()); verify(metricsRepository).save(metrics1); // soft delete assertNotNull(deletedMetrics.getDeletedDateTime()); assertEquals(metrics1, deletedMetrics); } @Test void hardDeleteAll() { void shouldUpdate() { Company company = Company.builder().name("Apple").build(); House house = House .builder() .state("CR") .address("lsakdj") .city("sdfa") .build(); Device device = Device .builder() .company(company) .name("device-1") .build(); SmartMeter smartMeter = SmartMeter .builder() .name("meter-1") .device(device) .house(house) .build(); Metrics originalMetrics = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(100.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); Metrics updatedMetrics = Metrics .builder() .smartMeter(smartMeter) .consumptionKWH(300.0) .timeStamp(LocalDateTime.of(2023,1,1,20,0)) .build(); when(metricsRepository.findById(originalMetrics.getId())).thenReturn(Optional.of(originalMetrics)); when(metricsRepository.save(updatedMetrics)).thenReturn(updatedMetrics); Metrics result = metricsService.update(updatedMetrics, originalMetrics.getId()); verify(metricsRepository).findById(originalMetrics.getId()); verify(metricsRepository).save(updatedMetrics); assertEquals(originalMetrics.getId(), result.getId()); assertEquals(updatedMetrics.getConsumptionKWH(), result.getConsumptionKWH()); assertEquals(updatedMetrics.getSmartMeter().getName(), result.getSmartMeter().getName()); } @Test void getRepository() { void shouldHardDeleteAll() { metricsService.hardDeleteAll(); verify(metricsRepository).deleteAll(); } Loading