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 { ...@@ -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 * @param statuses a list of commit validation statuses to retrieve a modification time from
* @return a list of flattened errors, or an empty list if (none are found. * @return the most recent modification time for any of the passed statuses.
*/ */
static String getLastKnownValidationTime(List<CommitValidationStatus> statuses) { static String getLastKnownValidationTime(List<CommitValidationStatus> statuses) {
CommitValidationStatus latestStatus = statuses CommitValidationStatus latestStatus = statuses
.stream() .stream()
.sorted((o1, o2) -> o1.getLastModified().compareTo(o2.getLastModified())) .sorted((o1, o2) -> o2.getLastModified().compareTo(o1.getLastModified()))
.findFirst() .findFirst()
.orElse(null); .orElse(null);
if (latestStatus == null) { if (latestStatus == null) {
......
...@@ -11,7 +11,17 @@ ...@@ -11,7 +11,17 @@
*/ */
package org.eclipsefoundation.git.eca.config; 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.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource; import org.junit.jupiter.params.provider.CsvSource;
...@@ -64,4 +74,32 @@ class EclipseQuteTemplateExtensionsTest { ...@@ -64,4 +74,32 @@ class EclipseQuteTemplateExtensionsTest {
void obfuscateEmail_failure_invalidAddress(String input, String expected) { void obfuscateEmail_failure_invalidAddress(String input, String expected) {
Assertions.assertEquals(expected, EclipseQuteTemplateExtensions.obfuscateEmail(input)); 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