DATACMNS-1251 - Added methods returning Instant to Revision.

Revision and RevisionMetadata now have methods returning Instant instead of LocalDateTime. The existing methods returning LocalDateTime are now deprecated.

Original pull request: #270.
This commit is contained in:
Jens Schauder
2018-02-01 14:59:33 +01:00
committed by Oliver Gierke
parent 6675e33233
commit 139e098e85
5 changed files with 156 additions and 13 deletions

View File

@@ -17,8 +17,11 @@ package org.springframework.data.history;
import static org.assertj.core.api.Assertions.*;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import org.assertj.core.api.SoftAssertions;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.annotation.Reference;
@@ -27,9 +30,12 @@ import org.springframework.data.annotation.Reference;
* Unit tests for {@link AnnotationRevisionMetadata}.
*
* @author Oliver Gierke
* @author Jens Schauder
*/
public class AnnotationRevisionMetadataUnitTests {
SoftAssertions softly = new SoftAssertions();
@Test // DATACMNS-1173
public void exposesNoInformationOnEmptyProbe() {
@@ -40,10 +46,14 @@ public class AnnotationRevisionMetadataUnitTests {
assertThat(metadata.getRevisionDate()).isEmpty();
assertThatExceptionOfType(IllegalStateException.class) //
.isThrownBy(() -> metadata.getRequiredRevisionNumber());
.isThrownBy(metadata::getRequiredRevisionNumber);
assertThatExceptionOfType(IllegalStateException.class) //
.isThrownBy(() -> metadata.getRequiredRevisionDate());
.isThrownBy(metadata::getRequiredRevisionDate);
assertThatExceptionOfType(IllegalStateException.class) //
.isThrownBy(metadata::getRequiredRevisionInstant);
}
@Test // DATACMNS-1173
@@ -54,23 +64,49 @@ public class AnnotationRevisionMetadataUnitTests {
RevisionMetadata<Long> metadata = getMetadata(sample);
assertThat(metadata.getRevisionNumber()).hasValue(1L);
assertThat(metadata.getRequiredRevisionNumber()).isEqualTo(1L);
softly.assertThat(metadata.getRevisionNumber()).hasValue(1L);
softly.assertThat(metadata.getRequiredRevisionNumber()).isEqualTo(1L);
softly.assertAll();
}
@Test // DATACMNS-1173
public void exposesRevisionDate() {
public void exposesRevisionDateAndInstantForLocalDateTime() {
Sample sample = new Sample();
sample.revisionDate = LocalDateTime.now();
Instant expectedInstant = sample.revisionDate.atZone(ZoneOffset.systemDefault()).toInstant();
RevisionMetadata<Long> metadata = getMetadata(sample);
assertThat(metadata.getRevisionDate()).hasValue(sample.revisionDate);
assertThat(metadata.getRequiredRevisionDate()).isEqualTo(sample.revisionDate);
softly.assertThat(metadata.getRevisionDate()).hasValue(sample.revisionDate);
softly.assertThat(metadata.getRequiredRevisionDate()).isEqualTo(sample.revisionDate);
softly.assertThat(metadata.getRevisionInstant()).hasValue(expectedInstant);
softly.assertThat(metadata.getRequiredRevisionInstant()).isEqualTo(expectedInstant);
softly.assertAll();
}
private static RevisionMetadata<Long> getMetadata(Sample sample) {
@Test // DATACMNS-1251
public void exposesRevisionDateAndInstantForInstant() {
SampleWithInstant sample = new SampleWithInstant();
sample.revisionInstant = Instant.now();
LocalDateTime expectedLocalDateTime = LocalDateTime.ofInstant(sample.revisionInstant, ZoneOffset.systemDefault());
RevisionMetadata<Long> metadata = getMetadata(sample);
softly.assertThat(metadata.getRevisionDate()).hasValue(expectedLocalDateTime);
softly.assertThat(metadata.getRequiredRevisionDate()).isEqualTo(expectedLocalDateTime);
softly.assertThat(metadata.getRevisionInstant()).hasValue(sample.revisionInstant);
softly.assertThat(metadata.getRequiredRevisionInstant()).isEqualTo(sample.revisionInstant);
softly.assertAll();
}
private static RevisionMetadata<Long> getMetadata(Object sample) {
return new AnnotationRevisionMetadata<>(sample, Autowired.class, Reference.class);
}
@@ -79,4 +115,10 @@ public class AnnotationRevisionMetadataUnitTests {
@Autowired Long revisionNumber;
@Reference LocalDateTime revisionDate;
}
static class SampleWithInstant {
@Autowired Long revisionNumber;
@Reference Instant revisionInstant;
}
}

View File

@@ -18,6 +18,7 @@ package org.springframework.data.history;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
@@ -33,6 +34,7 @@ import org.mockito.junit.MockitoJUnitRunner;
* Unit tests for {@link RevisionMetadata}.
*
* @author Oliver Gierke
* @author Jens Schauder
*/
@RunWith(MockitoJUnitRunner.class)
public class RevisionUnitTests {
@@ -72,6 +74,15 @@ public class RevisionUnitTests {
assertThat(Revision.of(firstMetadata, new Object()).getRevisionDate()).isEqualTo(reference);
}
@Test // DATACMNS-1251
public void returnsRevisionInstant() {
Optional<Instant> reference = Optional.of(Instant.now());
when(firstMetadata.getRevisionInstant()).thenReturn(reference);
assertThat(Revision.of(firstMetadata, new Object()).getRevisionInstant()).isEqualTo(reference);
}
@Test // DATACMNS-218
public void returnsRevisionMetadata() {
assertThat(Revision.of(firstMetadata, new Object()).getMetadata()).isEqualTo(firstMetadata);