DATAES-792 - Add java.util.Date to the supported types for Field annotation date times.
Original PR: #432
This commit is contained in:
committed by
GitHub
parent
f6a37f4601
commit
e49f140233
@@ -3,6 +3,8 @@ package org.springframework.data.elasticsearch.core.convert;
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
@@ -14,7 +16,7 @@ import org.springframework.data.elasticsearch.annotations.DateFormat;
|
||||
*/
|
||||
class ElasticsearchDateConverterTests {
|
||||
|
||||
@ParameterizedTest
|
||||
@ParameterizedTest // DATAES-716
|
||||
@EnumSource(DateFormat.class)
|
||||
void shouldCreateConvertersForAllKnownFormats(DateFormat dateFormat) {
|
||||
|
||||
@@ -28,8 +30,8 @@ class ElasticsearchDateConverterTests {
|
||||
assertThat(converter).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldConvertToString() {
|
||||
@Test // DATAES-716
|
||||
void shouldConvertTemporalAccessorToString() {
|
||||
LocalDate localDate = LocalDate.of(2019, 12, 27);
|
||||
ElasticsearchDateConverter converter = ElasticsearchDateConverter.of(DateFormat.basic_date);
|
||||
|
||||
@@ -38,8 +40,8 @@ class ElasticsearchDateConverterTests {
|
||||
assertThat(formatted).isEqualTo("20191227");
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldParseFromString() {
|
||||
@Test // DATAES-716
|
||||
void shouldParseTemporalAccessorFromString() {
|
||||
LocalDate localDate = LocalDate.of(2019, 12, 27);
|
||||
ElasticsearchDateConverter converter = ElasticsearchDateConverter.of(DateFormat.basic_date);
|
||||
|
||||
@@ -47,4 +49,24 @@ class ElasticsearchDateConverterTests {
|
||||
|
||||
assertThat(parsed).isEqualTo(localDate);
|
||||
}
|
||||
|
||||
@Test // DATAES-792
|
||||
void shouldConvertLegacyDateToString() {
|
||||
Date date = new GregorianCalendar(2020, 3, 19, 21, 44).getTime();
|
||||
ElasticsearchDateConverter converter = ElasticsearchDateConverter.of(DateFormat.basic_date_time);
|
||||
|
||||
String formatted = converter.format(date);
|
||||
|
||||
assertThat(formatted).isEqualTo("20200419T194400.000Z");
|
||||
}
|
||||
|
||||
@Test // DATAES-792
|
||||
void shouldParseLegacyDateFromString() {
|
||||
Date date = new GregorianCalendar(2020, 3, 19, 21, 44).getTime();
|
||||
ElasticsearchDateConverter converter = ElasticsearchDateConverter.of(DateFormat.basic_date_time);
|
||||
|
||||
Date parsed = converter.parse("20200419T194400.000Z");
|
||||
|
||||
assertThat(parsed).isEqualTo(date);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import static org.assertj.core.api.Assertions.*;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.data.elasticsearch.annotations.DateFormat;
|
||||
@@ -69,25 +70,25 @@ public class SimpleElasticsearchPersistentPropertyUnitTests {
|
||||
assertThat(persistentProperty.getFieldName()).isEqualTo("by-value");
|
||||
}
|
||||
|
||||
@Test
|
||||
// DATAES-716
|
||||
@Test // DATAES-716, DATAES-792
|
||||
void shouldSetPropertyConverters() {
|
||||
SimpleElasticsearchPersistentEntity<?> persistentEntity = context.getRequiredPersistentEntity(DatesProperty.class);
|
||||
|
||||
ElasticsearchPersistentProperty persistentProperty = persistentEntity.getRequiredPersistentProperty("date");
|
||||
assertThat(persistentProperty.hasPropertyConverter()).isFalse();
|
||||
|
||||
persistentProperty = persistentEntity.getRequiredPersistentProperty("localDate");
|
||||
ElasticsearchPersistentProperty persistentProperty = persistentEntity.getRequiredPersistentProperty("localDate");
|
||||
assertThat(persistentProperty.hasPropertyConverter()).isTrue();
|
||||
assertThat(persistentProperty.getPropertyConverter()).isNotNull();
|
||||
|
||||
persistentProperty = persistentEntity.getRequiredPersistentProperty("localDateTime");
|
||||
assertThat(persistentProperty.hasPropertyConverter()).isTrue();
|
||||
assertThat(persistentProperty.getPropertyConverter()).isNotNull();
|
||||
|
||||
persistentProperty = persistentEntity.getRequiredPersistentProperty("legacyDate");
|
||||
assertThat(persistentProperty.hasPropertyConverter()).isTrue();
|
||||
assertThat(persistentProperty.getPropertyConverter()).isNotNull();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
// DATAES-716
|
||||
@Test // DATAES-716
|
||||
void shouldConvertFromLocalDate() {
|
||||
SimpleElasticsearchPersistentEntity<?> persistentEntity = context.getRequiredPersistentEntity(DatesProperty.class);
|
||||
ElasticsearchPersistentProperty persistentProperty = persistentEntity.getRequiredPersistentProperty("localDate");
|
||||
@@ -98,8 +99,7 @@ public class SimpleElasticsearchPersistentPropertyUnitTests {
|
||||
assertThat(converted).isEqualTo("27.12.2019");
|
||||
}
|
||||
|
||||
@Test
|
||||
// DATAES-716
|
||||
@Test // DATAES-716
|
||||
void shouldConvertToLocalDate() {
|
||||
SimpleElasticsearchPersistentEntity<?> persistentEntity = context.getRequiredPersistentEntity(DatesProperty.class);
|
||||
ElasticsearchPersistentProperty persistentProperty = persistentEntity.getRequiredPersistentProperty("localDate");
|
||||
@@ -110,6 +110,28 @@ public class SimpleElasticsearchPersistentPropertyUnitTests {
|
||||
assertThat(converted).isEqualTo(LocalDate.of(2019, 12, 27));
|
||||
}
|
||||
|
||||
@Test // DATAES_792
|
||||
void shouldConvertFromLegacyDate() {
|
||||
SimpleElasticsearchPersistentEntity<?> persistentEntity = context.getRequiredPersistentEntity(DatesProperty.class);
|
||||
ElasticsearchPersistentProperty persistentProperty = persistentEntity.getRequiredPersistentProperty("legacyDate");
|
||||
Date legacyDate = new GregorianCalendar(2020, 3, 19, 21, 44).getTime();
|
||||
|
||||
String converted = persistentProperty.getPropertyConverter().write(legacyDate);
|
||||
|
||||
assertThat(converted).isEqualTo("20200419T194400.000Z");
|
||||
}
|
||||
|
||||
@Test // DATES-792
|
||||
void shouldConvertToLegacyDate() {
|
||||
SimpleElasticsearchPersistentEntity<?> persistentEntity = context.getRequiredPersistentEntity(DatesProperty.class);
|
||||
ElasticsearchPersistentProperty persistentProperty = persistentEntity.getRequiredPersistentProperty("legacyDate");
|
||||
|
||||
Object converted = persistentProperty.getPropertyConverter().read("20200419T194400.000Z");
|
||||
|
||||
assertThat(converted).isInstanceOf(Date.class);
|
||||
assertThat(converted).isEqualTo(new GregorianCalendar(2020, 3, 19, 21, 44).getTime());
|
||||
}
|
||||
|
||||
static class InvalidScoreProperty {
|
||||
@Nullable @Score String scoreProperty;
|
||||
}
|
||||
@@ -123,8 +145,8 @@ public class SimpleElasticsearchPersistentPropertyUnitTests {
|
||||
}
|
||||
|
||||
static class DatesProperty {
|
||||
@Nullable @Field(type = FieldType.Date, format = DateFormat.basic_date) Date date;
|
||||
@Nullable @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "dd.MM.uuuu") LocalDate localDate;
|
||||
@Nullable @Field(type = FieldType.Date, format = DateFormat.basic_date_time) LocalDateTime localDateTime;
|
||||
@Nullable @Field(type = FieldType.Date, format = DateFormat.basic_date_time) Date legacyDate;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user