Skip to content

Commit 2636065

Browse files
committed
fix(fixtures): ensure timestamps are explicitly set for required DvObject properties in fixture builders (Dataset and DataFile)
1 parent 278b7ca commit 2636065

3 files changed

Lines changed: 27 additions & 6 deletions

File tree

src/test/java/edu/harvard/iq/dataverse/util/testing/fixtures/BuildContext.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package edu.harvard.iq.dataverse.util.testing.fixtures;
22

3+
import java.sql.Timestamp;
4+
import java.time.Instant;
5+
import java.util.Date;
6+
37
/**
48
* Immutable build context shared across a single fixture build.
59
*
@@ -11,6 +15,16 @@
1115
* @param sequence deterministic sequence number for the fixture instance
1216
*/
1317
public record BuildContext(
14-
long sequence
18+
long sequence,
19+
Instant now
1520
) {
21+
22+
Timestamp getTimestamp() {
23+
return Timestamp.from(now);
24+
}
25+
26+
Date getDate() {
27+
return Date.from(now);
28+
}
29+
1630
}

src/test/java/edu/harvard/iq/dataverse/util/testing/fixtures/DatasetFixtureBuilder.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import edu.harvard.iq.dataverse.util.testing.recipes.VariableSetRecipe;
1818
import edu.harvard.iq.dataverse.util.testing.recipes.VersionRecipe;
1919

20+
import java.time.Instant;
2021
import java.util.ArrayList;
2122
import java.util.List;
2223
import java.util.Objects;
@@ -109,7 +110,7 @@ public DatasetFixture build() {
109110
Objects.requireNonNull(populator, "populator must not be null");
110111

111112
// One context per build, so populators can use deterministic information about this fixture instance.
112-
BuildContext context = new BuildContext(SEQUENCE.getAndIncrement());
113+
BuildContext context = new BuildContext(SEQUENCE.getAndIncrement(), Instant.now());
113114

114115
// Create the top-level dataset and its current version, then wire them.
115116
Dataset dataset = createEmptyDataset(context);

src/test/java/edu/harvard/iq/dataverse/util/testing/fixtures/MinimalPopulator.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import edu.harvard.iq.dataverse.util.testing.recipes.VariableSetBuildContext;
1616

1717
import java.util.ArrayList;
18-
import java.util.Date;
1918
import java.util.HashSet;
2019

2120
public final class MinimalPopulator implements FixturePopulator {
@@ -33,6 +32,10 @@ public void populateDataset(Dataset dataset, BuildContext context) {
3332
dataset.setIdentifier("fixture-dataset-" + context.sequence());
3433
dataset.setStorageIdentifier("fixture-storage-" + context.sequence());
3534
dataset.setDatasetType(new DatasetType());
35+
36+
// necessary as DvObject says "not nullable"
37+
dataset.setCreateDate(context.getTimestamp());
38+
dataset.setModificationTime(context.getTimestamp());
3639
}
3740

3841
/**
@@ -43,13 +46,12 @@ public void populateDataset(Dataset dataset, BuildContext context) {
4346
*/
4447
@Override
4548
public void populateDatasetVersion(DatasetVersion version, BuildContext context) {
46-
Date now = new Date();
4749
version.setVersionNumber(1L);
4850
version.setMinorVersionNumber(0L);
4951
version.setVersionState(DatasetVersion.VersionState.DRAFT);
5052
version.setVersionNote("fixture-version");
51-
version.setCreateTime(now);
52-
version.setLastUpdateTime(now);
53+
version.setCreateTime(context.getDate());
54+
version.setLastUpdateTime(context.getDate());
5355

5456
// TermsOfUseAndAccess and DatasetVersion are mutually linked via a OneToOne.
5557
// The validator reads datasetVersion from the terms object, so both sides
@@ -90,6 +92,10 @@ public void populateDataFile(DataFile dataFile, FileBuildContext fileBuildContex
9092
dataFile.setDataTables(new ArrayList<>());
9193
dataFile.setFileMetadatas(new ArrayList<>());
9294
dataFile.setTags(new ArrayList<>());
95+
96+
// necessary as DvObject says "not nullable"
97+
dataFile.setCreateDate(context.getTimestamp());
98+
dataFile.setModificationTime(context.getTimestamp());
9399
}
94100

95101
/**

0 commit comments

Comments
 (0)