[SI-163] adjustments due to using one controller for displaying reminder and sending mails; adjust unit tests
Signed-off-by: Holger Rudolph <holger.rudolph@pta.de>
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationReminderMailSentController.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationReminderMailSentController.java
index 42052b3..c31320b 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationReminderMailSentController.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationReminderMailSentController.java
@@ -37,16 +37,8 @@
@ApiOperation(value = "Anzeigen des Reminder")
@ApiResponses(value = {@ApiResponse(code = 200, message = "Erfolgreich durchgeführt")})
@GetMapping
- public Boolean displayReminder() {
- return failureInformationReminderMailSentService.displayStatusChangeReminder();
- }
-
- @Secured({"ROLE_GRID-FAILURE-ADMIN", "ROLE_GRID-FAILURE-PUBLISHER"})
- @ApiOperation(value = "Anzeigen des Reminder")
- @ApiResponses(value = {@ApiResponse(code = 200, message = "Erfolgreich durchgeführt")})
- @GetMapping("/mail")
- public Boolean sendReminderMails() {
- return failureInformationReminderMailSentService.sendReminderMails();
+ public Boolean displayReminderAndSendMails() {
+ return failureInformationReminderMailSentService.displayStatusChangeReminderAndSendMails();
}
}
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentService.java
index 1ceda4a..1b23552 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentService.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentService.java
@@ -61,35 +61,30 @@
@Value("${reminder.status-change.minutes-before}")
long minutesBefore;
- public Boolean displayStatusChangeReminder() {
+ public Boolean displayStatusChangeReminderAndSendMails() {
Page<FailureInformationDto> failureInfoPage = failureInformationRepository
.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(PageRequest.of(0, 9999999))
.map(failureInformationMapper::toFailureInformationDto);
LocalDateTime reminderDate = LocalDateTime.now().plusMinutes(minutesBefore);
- return failureInfoPage.getContent()
- .stream()
- .filter(f -> f.getStatusInternId() != statusRepository.findById(GfiProcessState.COMPLETED.getStatusValue()).get().getUuid())
- .filter(f -> f.getFailureEndPlanned() != null )
- .anyMatch(f -> f.getFailureEndPlanned().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().isBefore(reminderDate) );
- }
-
- public boolean sendReminderMails() {
-
- Page<FailureInformationDto> failureInfoPage = failureInformationRepository
- .findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(PageRequest.of(0, 9999999))
- .map(failureInformationMapper::toFailureInformationDto);
-
- LocalDateTime reminderDate = LocalDateTime.now().plusMinutes(minutesBefore);
-
- List<FailureInformationDto> failureInformationDtoList = failureInfoPage.getContent()
+ List<FailureInformationDto> failureInformationDtoList = failureInfoPage.getContent()
.stream()
.filter(f -> f.getStatusInternId() != statusRepository.findById(GfiProcessState.COMPLETED.getStatusValue()).get().getUuid())
.filter(f -> f.getFailureEndPlanned() != null )
.filter(f -> f.getFailureEndPlanned().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().isBefore(reminderDate) )
.collect(Collectors.toList());
+ if (failureInformationDtoList.isEmpty()) {
+ return false;
+ } else {
+ sendReminderMails(failureInformationDtoList);
+ return true;
+ }
+
+ }
+
+ public void sendReminderMails(List<FailureInformationDto> failureInformationDtoList) {
for (FailureInformationDto dto: failureInformationDtoList) {
boolean sendMail = true;
@@ -115,7 +110,6 @@
}
}
- return true;
}
}
\ No newline at end of file
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationReminderMailSentControllerTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationReminderMailSentControllerTest.java
index c8d6e9e..0dcc812 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationReminderMailSentControllerTest.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationReminderMailSentControllerTest.java
@@ -45,21 +45,12 @@
@Test
public void shouldDisplayReminder() throws Exception {
Boolean isDisplayed = true;
- when(failureInformationReminderMailSentService.displayStatusChangeReminder()).thenReturn(isDisplayed);
+ when(failureInformationReminderMailSentService.displayStatusChangeReminderAndSendMails()).thenReturn(isDisplayed);
mockMvc.perform(get("/failure-reminder"))
.andExpect(status().is2xxSuccessful())
.andExpect(content().contentType(MediaType.APPLICATION_JSON));
}
- @Test
- public void shouldSendReminderMail() throws Exception {
- Boolean hasSent = true;
- when(failureInformationReminderMailSentService.sendReminderMails()).thenReturn(hasSent);
-
- mockMvc.perform(get("/failure-reminder/mail"))
- .andExpect(status().is2xxSuccessful())
- .andExpect(content().contentType(MediaType.APPLICATION_JSON));
- }
}
\ No newline at end of file
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentServiceTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentServiceTest.java
index d33a1b9..7c4960e 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentServiceTest.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentServiceTest.java
@@ -14,7 +14,6 @@
*/
package org.eclipse.openk.gridfailureinformation.service;
-import org.eclipse.openk.gridfailureinformation.bpmn.impl.GfiProcessState;
import org.eclipse.openk.gridfailureinformation.config.TestConfiguration;
import org.eclipse.openk.gridfailureinformation.model.RefStatus;
import org.eclipse.openk.gridfailureinformation.model.TblFailureInformation;
@@ -23,7 +22,9 @@
import org.eclipse.openk.gridfailureinformation.repository.FailureInformationRepository;
import org.eclipse.openk.gridfailureinformation.repository.StatusRepository;
import org.eclipse.openk.gridfailureinformation.support.MockDataHelper;
+import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto;
import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
@@ -35,12 +36,14 @@
import java.time.Duration;
import java.time.Instant;
import java.util.Date;
+import java.util.List;
import java.util.Optional;
import java.util.UUID;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -66,6 +69,25 @@
private ExportService exportService;
@Test
+ public void shouldDisplayReminder() {
+ Page<TblFailureInformation> mockfailurePage = MockDataHelper.mockTblFailureInformationPage();
+ RefStatus mockRefStatus = MockDataHelper.mockRefStatusCreated();
+
+ Date reminderDate = Date.from( Instant.now().plus(Duration.ofHours(2)));
+ mockfailurePage.getContent().stream().findFirst().get().setFailureEndPlanned(reminderDate);
+ TblFailureInformation tblFailureInformation = MockDataHelper.mockTblFailureInformation();
+
+ when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage);
+ when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus));
+ when(failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblFailureInformation));
+ when(failureInformationReminderMailSentRepository.findByTblFailureInformation(any(TblFailureInformation.class))).thenReturn(Optional.empty());
+
+ Boolean reminderIsDisplayed = failureInformationReminderMailSentService.displayStatusChangeReminderAndSendMails();
+
+ assertEquals(reminderIsDisplayed, true);
+ }
+
+ @Test
public void shouldNotDisplayReminder() {
Page<TblFailureInformation> mockfailurePage = MockDataHelper.mockTblFailureInformationPage();
RefStatus mockRefStatus = MockDataHelper.mockRefStatusCreated();
@@ -73,103 +95,43 @@
when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage);
when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus));
- Boolean reminderIsDisplayed = failureInformationReminderMailSentService.displayStatusChangeReminder();
+ Boolean reminderIsDisplayed = failureInformationReminderMailSentService.displayStatusChangeReminderAndSendMails();
+
+ assertEquals(reminderIsDisplayed, false);
+ }
+
+
+ @Test
+ public void shouldNotDisplayReminder_NoExpectedStatusChangeFound() {
+ Page<TblFailureInformation> mockfailurePage = MockDataHelper.mockTblFailureInformationPage();
+ Date reminderDate = Date.from( Instant.now().plus(Duration.ofHours(96)));
+ mockfailurePage.getContent().stream().forEach(f -> f.setFailureEndPlanned(reminderDate));
+ RefStatus mockRefStatus = MockDataHelper.mockRefStatusCreated();
+ List<FailureInformationDto> failureInformationDtoList = MockDataHelper.mockGridFailureInformationDtos();
+
+ when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage);
+ when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus));
+ when(exportService.exportFailureInformationReminderMail(any(UUID.class))).thenReturn(true);
+
+ Boolean reminderIsDisplayed = failureInformationReminderMailSentService.displayStatusChangeReminderAndSendMails();
assertEquals(reminderIsDisplayed, false);
}
@Test
- public void shouldDisplayReminder() {
- Page<TblFailureInformation> mockfailurePage = MockDataHelper.mockTblFailureInformationPage();
- RefStatus mockRefStatus = MockDataHelper.mockRefStatusCreated();
-
- Date reminderDate = Date.from( Instant.now().plus(Duration.ofHours(2)));
- mockfailurePage.getContent().stream().findFirst().get().setFailureEndPlanned(reminderDate);
-
- when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage);
- when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus));
-
- Boolean reminderIsDisplayed = failureInformationReminderMailSentService.displayStatusChangeReminder();
-
- assertEquals(reminderIsDisplayed, true);
- }
-
- @Test
- public void shouldSendReminderMails() {
- Page<TblFailureInformation> mockfailurePage = MockDataHelper.mockTblFailureInformationPage();
- Date reminderDate = Date.from( Instant.now().plus(Duration.ofHours(2)));
- mockfailurePage.getContent().stream().findFirst().get().setFailureEndPlanned(reminderDate);
- RefStatus mockRefStatus = MockDataHelper.mockRefStatusCreated();
-
- TblFailureInformation tblFailureInformation = MockDataHelper.mockTblFailureInformation();
-
- when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage);
- when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus));
- when(failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblFailureInformation));
- when(failureInformationReminderMailSentRepository.findByTblFailureInformation(any(TblFailureInformation.class))).thenReturn(Optional.empty());
- when(exportService.exportFailureInformationReminderMail(any(UUID.class))).thenReturn(true);
-
- Boolean mailHasSent = failureInformationReminderMailSentService.sendReminderMails();
- assertEquals(mailHasSent, true);
-
- }
-
- @Test
- public void shouldNotSendNoReminderMails_MailsAlreadySent() {
- Page<TblFailureInformation> mockfailurePage = MockDataHelper.mockTblFailureInformationPage();
- Date reminderDate = Date.from( Instant.now().plus(Duration.ofHours(2)));
- mockfailurePage.getContent().stream().findFirst().get().setFailureEndPlanned(reminderDate);
- RefStatus mockRefStatus = MockDataHelper.mockRefStatusCreated();
-
- TblFailureInformation tblFailureInformation = MockDataHelper.mockTblFailureInformation();
- TblFailureInformationReminderMailSent failureInfoReminderMailSent = MockDataHelper.mockTblFailureInformationReminderMailSent();
-
- when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage);
- when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus));
- when(failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblFailureInformation));
- when(failureInformationReminderMailSentRepository.findByTblFailureInformation(any(TblFailureInformation.class))).thenReturn(Optional.of(failureInfoReminderMailSent));
- when(exportService.exportFailureInformationReminderMail(any(UUID.class))).thenReturn(true);
-
- Boolean mailHasSent = failureInformationReminderMailSentService.sendReminderMails();
-
- verify(exportService, never()).exportFailureInformationReminderMail(any(UUID.class));
- assertEquals(mailHasSent, true);
-
- }
-
- @Test
- public void shouldNotSendReminderMails_NoExpectedStatusChangeFound() {
- Page<TblFailureInformation> mockfailurePage = MockDataHelper.mockTblFailureInformationPage();
- Date reminderDate = Date.from( Instant.now().plus(Duration.ofHours(96)));
- mockfailurePage.getContent().stream().forEach(f -> f.setFailureEndPlanned(reminderDate));
- RefStatus mockRefStatus = MockDataHelper.mockRefStatusCreated();
-
- when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage);
- when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus));
- when(exportService.exportFailureInformationReminderMail(any(UUID.class))).thenReturn(true);
-
- Boolean mailHasSent = failureInformationReminderMailSentService.sendReminderMails();
-
- verify(exportService, never()).exportFailureInformationReminderMail(any(UUID.class));
- assertEquals(mailHasSent, true);
-
- }
-
- @Test
- public void shouldNotSendReminderMails_NoFailureEndPlanned() {
+ public void shouldNotDisplayReminder_NoFailureEndPlanned() {
Page<TblFailureInformation> mockfailurePage = MockDataHelper.mockTblFailureInformationPage();
mockfailurePage.getContent().stream().forEach(f -> f.setFailureEndPlanned(null));
RefStatus mockRefStatus = MockDataHelper.mockRefStatusCreated();
+ List<FailureInformationDto> failureInformationDtoList = MockDataHelper.mockGridFailureInformationDtos();
when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage);
when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus));
when(exportService.exportFailureInformationReminderMail(any(UUID.class))).thenReturn(true);
- Boolean mailHasSent = failureInformationReminderMailSentService.sendReminderMails();
+ Boolean reminderIsDisplayed = failureInformationReminderMailSentService.displayStatusChangeReminderAndSendMails();
- verify(exportService, never()).exportFailureInformationReminderMail(any(UUID.class));
- assertEquals(mailHasSent, true);
-
+ assertEquals(reminderIsDisplayed, false);
}
@Test
@@ -177,16 +139,47 @@
Page<TblFailureInformation> mockfailurePage = MockDataHelper.mockTblFailureInformationPage();
RefStatus mockRefStatus = MockDataHelper.mockRefStatusCOMPLETED();
mockfailurePage.getContent().stream().forEach(f -> f.setRefStatusIntern(null));
+ List<FailureInformationDto> failureInformationDtoList = MockDataHelper.mockGridFailureInformationDtos();
when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage);
when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus));
when(exportService.exportFailureInformationReminderMail(any(UUID.class))).thenReturn(true);
- Boolean mailHasSent = failureInformationReminderMailSentService.sendReminderMails();
+ Boolean reminderIsDisplayed = failureInformationReminderMailSentService.displayStatusChangeReminderAndSendMails();
- verify(exportService, never()).exportFailureInformationReminderMail(any(UUID.class));
- assertEquals(mailHasSent, true);
+ assertEquals(reminderIsDisplayed, false);
+ }
+
+ @Test
+ public void shouldSendReminderMails() {
+
+ TblFailureInformation tblFailureInformation = MockDataHelper.mockTblFailureInformation();
+ List<FailureInformationDto> failureInformationDtoList = MockDataHelper.mockGridFailureInformationDtos();
+
+ when(failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblFailureInformation));
+ when(failureInformationReminderMailSentRepository.findByTblFailureInformation(any(TblFailureInformation.class))).thenReturn(Optional.empty());
+ when(exportService.exportFailureInformationReminderMail(any(UUID.class))).thenReturn(true);
+
+ failureInformationReminderMailSentService.sendReminderMails(failureInformationDtoList);
+ Mockito.verify(failureInformationReminderMailSentRepository, times(2)).save(any(TblFailureInformationReminderMailSent.class));
}
+ @Test
+ public void shouldNotSendNoReminderMails_MailsAlreadySent() {
+
+ TblFailureInformation tblFailureInformation = MockDataHelper.mockTblFailureInformation();
+ TblFailureInformationReminderMailSent failureInfoReminderMailSent = MockDataHelper.mockTblFailureInformationReminderMailSent();
+ List<FailureInformationDto> failureInformationDtoList = MockDataHelper.mockGridFailureInformationDtos();
+
+ when(failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblFailureInformation));
+ when(failureInformationReminderMailSentRepository.findByTblFailureInformation(any(TblFailureInformation.class))).thenReturn(Optional.of(failureInfoReminderMailSent));
+ when(exportService.exportFailureInformationReminderMail(any(UUID.class))).thenReturn(true);
+
+ failureInformationReminderMailSentService.sendReminderMails(failureInformationDtoList);
+
+ verify(exportService, never()).exportFailureInformationReminderMail(any(UUID.class));
+ }
+
+
}