diff --git a/quartz-manager-parent/pom.xml b/quartz-manager-parent/pom.xml
index 100fb97..db206be 100644
--- a/quartz-manager-parent/pom.xml
+++ b/quartz-manager-parent/pom.xml
@@ -137,6 +137,8 @@
**/ServletInitializer.class
**/SessionController.class
**/HealthCheckController.class
+ **/WebShowcaseOpenApiConfig.class
+ **/MisfireTestJob.class
diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTOTest.java b/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTOTest.java
new file mode 100644
index 0000000..c592829
--- /dev/null
+++ b/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTOTest.java
@@ -0,0 +1,42 @@
+package it.fabioformosa.quartzmanager.api.dto;
+
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class TriggerFiredBundleDTOTest {
+
+ @Test
+ void givenARecursionOf1000_whenTheTriggerHasFired10_thenThePercentageIs10(){
+ TriggerFiredBundleDTO triggerFiredBundleDTO = TriggerFiredBundleDTO.builder().build();
+ triggerFiredBundleDTO.setTimesTriggered(10);
+ triggerFiredBundleDTO.setRepeatCount(100);
+ Assertions.assertThat(triggerFiredBundleDTO.getPercentage()).isEqualTo(10);
+ }
+
+ @Test
+ void givenARecursionOf1000_whenTheTriggerHasFired23_thenThePercentageIsRoundedDown(){
+ TriggerFiredBundleDTO triggerFiredBundleDTO = TriggerFiredBundleDTO.builder().build();
+ triggerFiredBundleDTO.setTimesTriggered(23);
+ triggerFiredBundleDTO.setRepeatCount(1000);
+ Assertions.assertThat(triggerFiredBundleDTO.getPercentage()).isEqualTo(2);
+ }
+
+ @Test
+ void givenARecursionOf1000_whenTheTriggerHasFired26_thenThePercentageIsRoundedUp(){
+ TriggerFiredBundleDTO triggerFiredBundleDTO = TriggerFiredBundleDTO.builder().build();
+ triggerFiredBundleDTO.setTimesTriggered(26);
+ triggerFiredBundleDTO.setRepeatCount(1000);
+ Assertions.assertThat(triggerFiredBundleDTO.getPercentage()).isEqualTo(3);
+ }
+
+ @Test
+ void givenAnInfiniteRecursion_whenTheTriggerHasFired10_thenThePercentageIsMinus1(){
+ TriggerFiredBundleDTO triggerFiredBundleDTO = TriggerFiredBundleDTO.builder().build();
+ triggerFiredBundleDTO.setTimesTriggered(10);
+ triggerFiredBundleDTO.setRepeatCount(-1);
+ Assertions.assertThat(triggerFiredBundleDTO.getPercentage()).isEqualTo(-1);
+ }
+
+}
diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJobTest.java b/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJobTest.java
index 287a2ae..f56bd0d 100644
--- a/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJobTest.java
+++ b/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJobTest.java
@@ -58,6 +58,11 @@ class SampleJobTest {
Assertions.assertThat(triggerFiredBundleDTO.getJobKey()).isEqualTo("test-job");
Assertions.assertThat(triggerFiredBundleDTO.getRepeatCount()).isEqualTo(6);
Assertions.assertThat(triggerFiredBundleDTO.getJobClass()).isEqualTo(SampleJob.class.getName());
+ Assertions.assertThat(triggerFiredBundleDTO.getTimesTriggered()).isZero();
+ Assertions.assertThat(triggerFiredBundleDTO.getNextFireTime()).isNull();
+ Assertions.assertThat(triggerFiredBundleDTO.getPercentage()).isZero();
+ Assertions.assertThat(triggerFiredBundleDTO.getFinalFireTime()).isNotNull();
+ Assertions.assertThat(triggerFiredBundleDTO.getPreviousFireTime()).isNull();
return true;
}));
}