Skip to content

Commit 12c39e8

Browse files
Merge pull request #2405 from hmcts/CCD-5408
CCD-5408 - Use same `DateTimeValidator` formatter with CFV
2 parents 7ba80a3 + 9659fa6 commit 12c39e8

File tree

3 files changed

+26
-14
lines changed

3 files changed

+26
-14
lines changed

src/main/java/uk/gov/hmcts/ccd/domain/service/casefileview/CategoriesAndDocumentsService.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import uk.gov.hmcts.ccd.domain.service.common.CaseTypeService;
1515

1616
import java.time.LocalDateTime;
17-
import java.time.format.DateTimeFormatter;
1817
import java.util.Collection;
1918
import java.util.List;
2019
import java.util.Map;
@@ -28,6 +27,7 @@
2827
import static java.util.Collections.emptyList;
2928
import static java.util.stream.Collectors.collectingAndThen;
3029
import static java.util.stream.Collectors.toUnmodifiableList;
30+
import static uk.gov.hmcts.ccd.domain.types.DateTimeValidator.DATE_TIME_FORMATTER;
3131

3232
@Named
3333
public class CategoriesAndDocumentsService {
@@ -40,8 +40,6 @@ public class CategoriesAndDocumentsService {
4040
private static final String CATEGORY_ID = "category_id";
4141
private static final String UPLOAD_TIMESTAMP = "upload_timestamp";
4242

43-
private static final String UPLOAD_TIMESTAMP_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS";
44-
4543
private final CaseDataExtractor caseDataExtractor;
4644
private final CaseTypeService caseTypeService;
4745
private final FileViewDocumentService fileViewDocumentService;
@@ -197,10 +195,7 @@ private String resolveDocumentCategory(final String categoryOnFieldDefinition) {
197195

198196
LocalDateTime parseUploadTimestamp(final String uploadTimestamp) {
199197
return Optional.ofNullable(uploadTimestamp)
200-
.map(timestamp -> {
201-
final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(UPLOAD_TIMESTAMP_PATTERN);
202-
return LocalDateTime.parse(timestamp, dateTimeFormatter);
203-
})
198+
.map(timestamp -> LocalDateTime.parse(timestamp, DATE_TIME_FORMATTER))
204199
.orElse(null);
205200
}
206201

src/main/java/uk/gov/hmcts/ccd/domain/types/DateTimeValidator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
public class DateTimeValidator implements BaseTypeValidator {
2525
static final String TYPE_ID = "DateTime";
2626

27-
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ISO_DATE_TIME;
27+
public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ISO_DATE_TIME;
2828

2929
public BaseType getType() {
3030
return BaseType.get(TYPE_ID);

src/test/java/uk/gov/hmcts/ccd/domain/service/casefileview/CategoriesAndDocumentsServiceTest.java

+23-6
Original file line numberDiff line numberDiff line change
@@ -254,19 +254,36 @@ void testShouldRaiseExceptionWhenInputIsNotNullButInvalidTimestamp() {
254254
.isInstanceOf(RuntimeException.class);
255255
}
256256

257-
@Test
258-
void testShouldParseTimestamp() {
259-
final String timestamp = "2022-04-06T16:44:52.000000000";
260-
final LocalDateTime expectedTimestamp = LocalDateTime.of(2022, 4, 6, 16,
261-
44, 52);
262-
257+
@ParameterizedTest
258+
@MethodSource("provideTimestampParameters")
259+
void testShouldParseTimestamps(String timestamp, LocalDateTime expectedTimestamp) {
263260
final LocalDateTime result = underTest.parseUploadTimestamp(timestamp);
264261

265262
assertThat(result)
266263
.isNotNull()
267264
.isEqualTo(expectedTimestamp);
268265
}
269266

267+
private static Stream<Arguments> provideTimestampParameters() {
268+
return Stream.of(
269+
Arguments.of(
270+
"2022-04-06T16:44:52.000000000Z", LocalDateTime.of(2022, 4, 6, 16, 44, 52)
271+
),
272+
Arguments.of(
273+
"2022-04-06T16:44:52.000000000", LocalDateTime.of(2022, 4, 6, 16, 44, 52)
274+
),
275+
Arguments.of(
276+
"2022-04-06T16:44:52.000", LocalDateTime.of(2022, 4, 6, 16, 44, 52)
277+
),
278+
Arguments.of(
279+
"2022-04-06T16:44:52.123", LocalDateTime.of(2022, 4, 6, 16, 44, 52, 123000000)
280+
),
281+
Arguments.of(
282+
"2022-04-06T16:44:52", LocalDateTime.of(2022, 4, 6, 16, 44, 52)
283+
)
284+
);
285+
}
286+
270287
private static Stream<Arguments> provideCaseFieldExtractParameters() {
271288
return Stream.of(
272289
Arguments.of(new CaseFieldMetadata("draftOrderDoc", null),

0 commit comments

Comments
 (0)