Skip to content
Snippets Groups Projects
Commit 0524ba55 authored by Martin Lowe's avatar Martin Lowe :flag_ca:
Browse files

feat(test): add tests for the last known validation time Qute function

parent 195ca532
No related branches found
No related tags found
1 merge request!219feat(ui): Add last validation time, disable revalidation if PR not open
Pipeline #68346 passed
......@@ -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) {
......
......@@ -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;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment