Skip to content

Commit

Permalink
Merge pull request #6900 from pascalgrimaud/jhipster-module-propertie…
Browse files Browse the repository at this point in the history
…s-with-instant

Add getInstantOrDefault method to JHipster Module Properties
  • Loading branch information
pascalgrimaud authored Jul 19, 2023
2 parents 7e1220f + 3724e42 commit 5a3799d
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package tech.jhipster.lite.module.domain.properties;

import java.time.Instant;
import java.time.format.DateTimeParseException;
import java.util.Map;
import tech.jhipster.lite.error.domain.Assert;
import tech.jhipster.lite.module.domain.Indentation;
Expand Down Expand Up @@ -52,6 +54,15 @@ public String getOrDefaultString(String key, String defaultValue) {
return parameters.getOrDefault(key, defaultValue, String.class, String::isBlank);
}

public Instant getInstantOrDefault(String key, Instant defaultValue) {
String date = getOrDefaultString(key, defaultValue.toString());
try {
return Instant.parse(date);
} catch (DateTimeParseException ex) {
throw InvalidPropertyTypeException.builder().key(key).expectedType(Instant.class).actualType(String.class);
}
}

public boolean getBoolean(String key) {
return parameters.get(key, Boolean.class);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import static org.assertj.core.api.Assertions.*;

import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.Map;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
Expand All @@ -14,6 +16,9 @@
@UnitTest
class JHipsterModulePropertiesTest {

private final Instant today = Instant.now();
private final Instant yesterday = Instant.now().minus(1, ChronoUnit.DAYS);

@Nested
@DisplayName("Mandatory String")
class JHipsterModulePropertiesMandatoryStringTest {
Expand Down Expand Up @@ -145,6 +150,27 @@ void shouldGetProperty() {
}
}

@Nested
@DisplayName("Instant")
class JHipsterModulePropertiesInstantTest {

@ParameterizedTest
@ValueSource(strings = { "string", "boolean", "integer" })
void shouldNotGetInvalidType(String key) {
assertThatThrownBy(() -> properties().getInstantOrDefault(key, today)).isExactlyInstanceOf(InvalidPropertyTypeException.class);
}

@Test
void shouldGetProperty() {
assertThat(properties().getInstantOrDefault("instant", yesterday)).isEqualTo(today);
}

@Test
void shouldGetUnknownProperty() {
assertThat(properties().getInstantOrDefault("unknown", yesterday)).isEqualTo(yesterday);
}
}

@Test
void shouldGetDefaultProjectProperties() {
JHipsterModuleProperties properties = properties();
Expand All @@ -156,6 +182,10 @@ void shouldGetDefaultProjectProperties() {
}

private JHipsterModuleProperties properties() {
return new JHipsterModuleProperties("/tmp/folder", false, Map.of("string", "value", "boolean", true, "integer", 42, "blank", " "));
return new JHipsterModuleProperties(
"/tmp/folder",
false,
Map.of("string", "value", "boolean", true, "integer", 42, "blank", " ", "instant", today.toString())
);
}
}

0 comments on commit 5a3799d

Please sign in to comment.