From 7553efdc3b3858feaff303c8cd1224ca836e7354 Mon Sep 17 00:00:00 2001 From: Fabio Formosa Date: Fri, 2 Dec 2022 00:21:23 +0100 Subject: [PATCH] #62 added missing tests --- .../api/services/SimpleTriggerService.java | 3 +- .../services/SimpleTriggerServiceTest.java | 56 ++++++++++++++++++- .../api/services/TriggerServiceTest.java | 50 +++++++++++++++++ 3 files changed, 104 insertions(+), 5 deletions(-) create mode 100644 quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/TriggerServiceTest.java diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerService.java b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerService.java index fe636e1..908f815 100644 --- a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerService.java +++ b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerService.java @@ -1,7 +1,6 @@ package it.fabioformosa.quartzmanager.api.services; import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerCommandDTO; -import it.fabioformosa.quartzmanager.api.dto.TriggerDTO; import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerDTO; import it.fabioformosa.quartzmanager.api.exceptions.TriggerNotFoundException; import org.quartz.*; @@ -34,7 +33,7 @@ public class SimpleTriggerService extends AbstractSchedulerService { return conversionService.convert(newSimpleTrigger, SimpleTriggerDTO.class); } - public TriggerDTO rescheduleSimpleTrigger(SimpleTriggerCommandDTO triggerCommandDTO) throws SchedulerException { + public SimpleTriggerDTO rescheduleSimpleTrigger(SimpleTriggerCommandDTO triggerCommandDTO) throws SchedulerException { SimpleTrigger newSimpleTrigger = conversionService.convert(triggerCommandDTO, SimpleTrigger.class); TriggerKey triggerKey = TriggerKey.triggerKey(triggerCommandDTO.getTriggerName()); diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceTest.java b/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceTest.java index dea7667..e396c97 100644 --- a/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceTest.java +++ b/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceTest.java @@ -9,9 +9,7 @@ import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; -import org.quartz.Scheduler; -import org.quartz.SchedulerException; -import org.quartz.SimpleTrigger; +import org.quartz.*; import org.springframework.core.convert.ConversionService; import java.util.Date; @@ -45,6 +43,21 @@ class SimpleTriggerServiceTest { Assertions.assertThat(throwable).isInstanceOf(TriggerNotFoundException.class); } + @Test + void givenAnExistingTrigger_whenGetSimplerTriggerByNameIsCalled_thenTheDtoIsReturned() throws SchedulerException, TriggerNotFoundException { + String existing_trigger = "existing_trigger"; + Mockito.when(scheduler.getTrigger(any(TriggerKey.class))) + .thenReturn(TriggerBuilder.newTrigger().withIdentity(existing_trigger).build()); + Mockito.when(conversionService.convert(any(SimpleTrigger.class), eq(SimpleTriggerDTO.class))) + .thenReturn(SimpleTriggerDTO.builder() + .triggerKeyDTO(TriggerKeyDTO.builder().name(existing_trigger).build()) + .build()); + + + SimpleTriggerDTO simpleTriggerByName = simpleSchedulerService.getSimpleTriggerByName(existing_trigger); + Assertions.assertThat(simpleTriggerByName.getTriggerKeyDTO().getName()).isEqualTo(existing_trigger); + } + @Test void givenASimpleTriggerCommandDTO_whenASimpleTriggerIsScheduled_thenATriggerDTOIsReturned() throws SchedulerException, ClassNotFoundException { SimpleTriggerInputDTO triggerInputDTO = SimpleTriggerInputDTO.builder() @@ -79,4 +92,41 @@ class SimpleTriggerServiceTest { Assertions.assertThat(simpleTrigger).isEqualTo(expectedTriggerDTO); } + @Test + void givenASimpleTriggerCommandDTO_whenASimpleTriggerIsRecheduled_thenATriggerDTOIsReturned() throws SchedulerException, ClassNotFoundException { + SimpleTriggerInputDTO triggerInputDTO = SimpleTriggerInputDTO.builder() + .jobClass("it.fabioformosa.quartzmanager.api.jobs.SampleJob") + .startDate(new Date()) + .repeatInterval(5000L).repeatCount(5) + .endDate(DateUtils.addHoursToNow(1)) + .build(); + + String simpleTriggerName = "simpleTrigger"; + + SimpleTriggerDTO expectedTriggerDTO = SimpleTriggerDTO.builder() + .startTime(triggerInputDTO.getStartDate()) + .repeatInterval(1000) + .repeatCount(10) + .mayFireAgain(true) + .finalFireTime(triggerInputDTO.getEndDate()) + .jobKeyDTO(JobKeyDTO.builder().name("MyJob").build()) + .misfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW) + .triggerKeyDTO(TriggerKeyDTO.builder().name(simpleTriggerName).build()) + .build(); + + Mockito.when(scheduler.rescheduleJob(any(), any())).thenReturn(new Date()); + Mockito.when(conversionService.convert(any(), eq(SimpleTriggerDTO.class))).thenReturn(expectedTriggerDTO); + + SimpleTriggerCommandDTO simpleTriggerCommandDTO = SimpleTriggerCommandDTO.builder() + .triggerName(simpleTriggerName) + .simpleTriggerInputDTO(triggerInputDTO) + .build(); + SimpleTriggerDTO simpleTrigger = simpleSchedulerService.rescheduleSimpleTrigger(simpleTriggerCommandDTO); + + Assertions.assertThat(simpleTrigger).isEqualTo(expectedTriggerDTO); + + Mockito.verify(scheduler).rescheduleJob(any(), any()); + Mockito.verify(conversionService).convert(any(), eq(SimpleTriggerDTO.class)); + } + } diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/TriggerServiceTest.java b/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/TriggerServiceTest.java new file mode 100644 index 0000000..0d7979d --- /dev/null +++ b/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/TriggerServiceTest.java @@ -0,0 +1,50 @@ +package it.fabioformosa.quartzmanager.api.services; + +import it.fabioformosa.quartzmanager.api.dto.TriggerKeyDTO; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.quartz.TriggerKey; +import org.springframework.core.convert.ConversionService; +import org.springframework.core.convert.TypeDescriptor; + +import java.util.List; +import java.util.Set; + +import static org.mockito.ArgumentMatchers.any; + +class TriggerServiceTest { + + @InjectMocks + private TriggerService triggerService; + + @Mock + private Scheduler scheduler; + + @Mock + private ConversionService conversionService; + + @BeforeEach + void setUp(){ + MockitoAnnotations.openMocks(this); + } + + @Test + void givenATrigger_whenTheyAreFecthed_TheServiceReturnsTheDtos() throws SchedulerException { + String triggerTestName = "triggerTest"; + Mockito.when(scheduler.getTriggerKeys(any())).thenReturn(Set.of(TriggerKey.triggerKey(triggerTestName))); + Mockito.when(conversionService.convert(any(Set.class), any(TypeDescriptor.class), any(TypeDescriptor.class))) + .thenReturn(List.of(TriggerKeyDTO.builder().name(triggerTestName).build())); + + List triggerKeyDTOs = triggerService.fetchTriggers(); + Assertions.assertThat(triggerKeyDTOs).hasSize(1); + Assertions.assertThat(triggerKeyDTOs.get(0).getName()).isEqualTo(triggerTestName); + } + +}