From 0524ba5540604121cad861b8c7f6b1ef8760f1de Mon Sep 17 00:00:00 2001
From: Martin Lowe <martin.lowe@eclipse-foundation.org>
Date: Thu, 20 Mar 2025 10:25:51 -0400
Subject: [PATCH] feat(test): add tests for the last known validation time Qute
 function

---
 .../config/EclipseQuteTemplateExtensions.java |  8 ++--
 .../EclipseQuteTemplateExtensionsTest.java    | 38 +++++++++++++++++++
 2 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/eclipsefoundation/git/eca/config/EclipseQuteTemplateExtensions.java b/src/main/java/org/eclipsefoundation/git/eca/config/EclipseQuteTemplateExtensions.java
index b79c2d61..3387e3b8 100644
--- a/src/main/java/org/eclipsefoundation/git/eca/config/EclipseQuteTemplateExtensions.java
+++ b/src/main/java/org/eclipsefoundation/git/eca/config/EclipseQuteTemplateExtensions.java
@@ -51,15 +51,15 @@ public class EclipseQuteTemplateExtensions {
     }
 
     /**
-     * Formats and flattens a list of statuses to a list of errors encountered while validation a set of commits.
+     * Sorts list and retrieves the most recently modified status, and returns a human readable format of the time.
      * 
-     * @param statuses a list of commit validation statuses to retrieve errors from
-     * @return a list of flattened errors, or an empty list if (none are found.
+     * @param statuses a list of commit validation statuses to retrieve a modification time from
+     * @return the most recent modification time for any of the passed statuses.
      */
     static String getLastKnownValidationTime(List<CommitValidationStatus> statuses) {
         CommitValidationStatus latestStatus = statuses
                 .stream()
-                .sorted((o1, o2) -> o1.getLastModified().compareTo(o2.getLastModified()))
+                .sorted((o1, o2) -> o2.getLastModified().compareTo(o1.getLastModified()))
                 .findFirst()
                 .orElse(null);
         if (latestStatus == null) {
diff --git a/src/test/java/org/eclipsefoundation/git/eca/config/EclipseQuteTemplateExtensionsTest.java b/src/test/java/org/eclipsefoundation/git/eca/config/EclipseQuteTemplateExtensionsTest.java
index 988fc6b1..76899e3c 100644
--- a/src/test/java/org/eclipsefoundation/git/eca/config/EclipseQuteTemplateExtensionsTest.java
+++ b/src/test/java/org/eclipsefoundation/git/eca/config/EclipseQuteTemplateExtensionsTest.java
@@ -11,7 +11,17 @@
  */
 package org.eclipsefoundation.git.eca.config;
 
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+
+import org.eclipsefoundation.git.eca.dto.CommitValidationStatus;
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.CsvSource;
 
@@ -64,4 +74,32 @@ class EclipseQuteTemplateExtensionsTest {
     void obfuscateEmail_failure_invalidAddress(String input, String expected) {
         Assertions.assertEquals(expected, EclipseQuteTemplateExtensions.obfuscateEmail(input));
     }
+
+    @Test
+    void getLastKnownValidationTime_success() {
+        ZonedDateTime timeOne = ZonedDateTime.now().minus(3, ChronoUnit.DAYS);
+        ZonedDateTime timeTwo = ZonedDateTime.now().minus(5, ChronoUnit.DAYS);
+        ZonedDateTime timeThree = ZonedDateTime.now().minus(1, ChronoUnit.DAYS);
+        List<CommitValidationStatus> statuses = Arrays
+                .asList(createStatus(Optional.of(timeOne)), createStatus(Optional.of(timeTwo)), createStatus(Optional.of(timeThree)));
+        // should return time three in RFC 1123 format, as it is the most recent time.
+        Assertions
+                .assertEquals(timeThree.format(DateTimeFormatter.RFC_1123_DATE_TIME),
+                        EclipseQuteTemplateExtensions.getLastKnownValidationTime(statuses));
+    }
+
+    @Test
+    void getLastKnownValidationTime_noCommits() {
+        // should return "Unknown" if we can't find an associated modification time at all
+        Assertions
+                .assertEquals("Unknown",
+                        EclipseQuteTemplateExtensions.getLastKnownValidationTime(new ArrayList<>()));
+    }
+
+    private CommitValidationStatus createStatus(Optional<ZonedDateTime> date) {
+        CommitValidationStatus status = new CommitValidationStatus();
+        status.setCreationDate(ZonedDateTime.now());
+        status.setLastModified(date.orElse(ZonedDateTime.now()));
+        return status;
+    }
 }
-- 
GitLab