in ddm-rrm/src/it/java/com/epam/digital/data/platform/management/CandidateVersionFormsControllerIT.java [472:524]
void updateForm_asteriskETag() {
// add file to "remote" repo
final var headFormContent = context.getResourceContent(
"/versions/candidates/{versionCandidateId}/forms/{formName}/PUT/valid-form-head.json");
context.addFileToRemoteHeadRepo("/forms/valid-form.json", headFormContent);
// mock gerrit change info for version candidate
final var versionCandidateId = context.createVersionCandidate();
// define expected form content to update
final var expectedFormContent = context.getResourceContent(
"/versions/candidates/{versionCandidateId}/forms/{formName}/PUT/valid-form-version-candidate.json");
// perform query
mockMvc.perform(
put("/versions/candidates/{versionCandidateId}/forms/{formName}",
versionCandidateId, "valid-form")
.contentType(MediaType.APPLICATION_JSON)
.content(expectedFormContent)
.header("If-Match", "*")
.accept(MediaType.APPLICATION_JSON)
).andExpectAll(
status().isOk(),
content().contentType(MediaType.APPLICATION_JSON),
jsonPath("$.name", is("valid-form")),
jsonPath("$.title", is("Valid form Version Candidate"))
);
// define expected created date for form
final var expectedCreated = context.getHeadRepoDatesByPath(
"forms/valid-form.json").getCreated();
// assert that actual content and expected have no differences except for created and updated dates
final var actualFormContent = context.getFileFromRemoteVersionCandidateRepo(
"/forms/valid-form.json");
JSONAssert.assertEquals(expectedFormContent, actualFormContent,
new CustomComparator(JSONCompareMode.LENIENT,
new Customization("created", (o1, o2) -> true),
new Customization("modified", (o1, o2) -> true)
));
// assert that form dates are close to current date
var form = JsonParser.parseString(actualFormContent).getAsJsonObject();
final var created = LocalDateTime.parse(form.get("created").getAsString(),
JacksonConfig.DATE_TIME_FORMATTER).format(JacksonConfig.DATE_TIME_FORMATTER);
final var updated = LocalDateTime.parse(form.get("modified").getAsString(),
JacksonConfig.DATE_TIME_FORMATTER).format(JacksonConfig.DATE_TIME_FORMATTER);
Assertions.assertThat(created)
.isEqualTo(expectedCreated);
Assertions.assertThat(LocalDateTime.parse(updated, JacksonConfig.DATE_TIME_FORMATTER))
.isCloseTo(LocalDateTime.now(), within(1, ChronoUnit.MINUTES));
}