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