Skip to content

Commit 686ff79

Browse files
committed
refactor: remove date format validation logic and associated error handling
1 parent fcd2ea5 commit 686ff79

File tree

3 files changed

+1
-125
lines changed

3 files changed

+1
-125
lines changed

src/datasets/domain/useCases/validators/SingleMetadataFieldValidator.ts

Lines changed: 1 addition & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@ import {
33
DatasetMetadataFieldAndValueInfo
44
} from './BaseMetadataFieldValidator'
55
import { ControlledVocabularyFieldError } from './errors/ControlledVocabularyFieldError'
6-
import { DateFormatFieldError } from './errors/DateFormatFieldError'
76
import { MetadataFieldValidator } from './MetadataFieldValidator'
87
import { DatasetMetadataChildFieldValueDTO } from '../../dtos/DatasetDTO'
98
import { MultipleMetadataFieldValidator } from './MultipleMetadataFieldValidator'
109
import {
1110
MetadataFieldInfo,
12-
MetadataFieldType,
13-
MetadataFieldWatermark
11+
MetadataFieldType
1412
} from '../../../../metadataBlocks/domain/models/MetadataBlock'
1513

1614
export class SingleMetadataFieldValidator extends BaseMetadataFieldValidator {
@@ -50,10 +48,6 @@ export class SingleMetadataFieldValidator extends BaseMetadataFieldValidator {
5048
this.validateControlledVocabularyFieldValue(datasetMetadataFieldAndValueInfo)
5149
}
5250

53-
if (metadataFieldInfo.type == MetadataFieldType.Date) {
54-
this.validateDateFieldValue(datasetMetadataFieldAndValueInfo)
55-
}
56-
5751
if (metadataFieldInfo.childMetadataFields != undefined) {
5852
this.validateChildMetadataFieldValues(datasetMetadataFieldAndValueInfo)
5953
}
@@ -76,47 +70,6 @@ export class SingleMetadataFieldValidator extends BaseMetadataFieldValidator {
7670
}
7771
}
7872

79-
private validateDateFieldValue(
80-
datasetMetadataFieldAndValueInfo: DatasetMetadataFieldAndValueInfo
81-
) {
82-
const {
83-
metadataFieldInfo: { watermark },
84-
metadataFieldValue
85-
} = datasetMetadataFieldAndValueInfo
86-
87-
const acceptsAllDateFormats = watermark === MetadataFieldWatermark.YYYYOrYYYYMMOrYYYYMMDD
88-
89-
const YYYY_MM_DD_DATE_FORMAT_REGEX = /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/
90-
91-
const YYYY_MM_FORMAT_REGEX = /^\d{4}-(0[1-9]|1[0-2])$/
92-
93-
const YYYY_FORMAT_REGEX = /^\d{4}$/
94-
95-
const isValidDateFormat = (value: string): boolean => {
96-
if (acceptsAllDateFormats) {
97-
// Check if it matches any of the formats
98-
return (
99-
YYYY_MM_DD_DATE_FORMAT_REGEX.test(value) ||
100-
YYYY_MM_FORMAT_REGEX.test(value) ||
101-
YYYY_FORMAT_REGEX.test(value)
102-
)
103-
} else {
104-
// Only accepts YYYY-MM-DD format
105-
return YYYY_MM_DD_DATE_FORMAT_REGEX.test(value)
106-
}
107-
}
108-
109-
if (!isValidDateFormat(metadataFieldValue as string)) {
110-
throw new DateFormatFieldError(
111-
datasetMetadataFieldAndValueInfo.metadataFieldKey,
112-
datasetMetadataFieldAndValueInfo.metadataBlockName,
113-
watermark,
114-
datasetMetadataFieldAndValueInfo.metadataParentFieldKey,
115-
datasetMetadataFieldAndValueInfo.metadataFieldPosition
116-
)
117-
}
118-
}
119-
12073
private validateChildMetadataFieldValues(
12174
datasetMetadataFieldAndValueInfo: DatasetMetadataFieldAndValueInfo
12275
) {

src/datasets/domain/useCases/validators/errors/DateFormatFieldError.ts

Lines changed: 0 additions & 19 deletions
This file was deleted.

test/unit/datasets/DatasetResourceValidator.test.ts

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -154,64 +154,6 @@ describe('validate', () => {
154154
expect(() => sut.validate(testDataset, testMetadataBlocks)).not.toThrow()
155155
})
156156

157-
test('should raise a date format validation error when a date field has an invalid format', () => {
158-
const testDataset = createDatasetDTO(undefined, undefined, undefined, '1-1-2020')
159-
160-
expect.assertions(6)
161-
runValidateExpectingFieldValidationError(
162-
testDataset,
163-
'timePeriodCoveredStart',
164-
'There was an error when validating the field timePeriodCoveredStart from metadata block citation. Reason was: The field requires a valid date format (YYYY or YYYY-MM or YYYY-MM-DD).'
165-
)
166-
})
167-
168-
test('should not raise a date format validation error when a date field has a valid YYYY-MM-DD format', () => {
169-
const testDataset = createDatasetDTO(undefined, undefined, undefined, '2020-01-01')
170-
expect(() => sut.validate(testDataset, testMetadataBlocks)).not.toThrow()
171-
})
172-
173-
test('should not raise a date format validation error when a date field has a valid YYYY-MM format', () => {
174-
const testDataset = createDatasetDTO(undefined, undefined, undefined, '2020-01')
175-
expect(() => sut.validate(testDataset, testMetadataBlocks)).not.toThrow()
176-
})
177-
178-
test('should not raise a date format validation error when a date field has a valid YYYY format', () => {
179-
const testDataset = createDatasetDTO(undefined, undefined, undefined, '2020')
180-
expect(() => sut.validate(testDataset, testMetadataBlocks)).not.toThrow()
181-
})
182-
183-
test('should raise a date format validation error when a date field has a wrong date format according to the field watermark', () => {
184-
const testDataset = createDatasetDTO(
185-
undefined,
186-
undefined,
187-
undefined,
188-
undefined,
189-
undefined,
190-
undefined,
191-
'01-03'
192-
)
193-
194-
expect.assertions(6)
195-
runValidateExpectingFieldValidationError(
196-
testDataset,
197-
'dateOfCreation',
198-
'There was an error when validating the field dateOfCreation from metadata block citation. Reason was: The field requires a valid date format (YYYY-MM-DD).'
199-
)
200-
})
201-
202-
test('should not raise a date format validation error when a date field has a valid format according to the field watermark', () => {
203-
const testDataset = createDatasetDTO(
204-
undefined,
205-
undefined,
206-
undefined,
207-
undefined,
208-
undefined,
209-
undefined,
210-
'2024-01-03'
211-
)
212-
expect(() => sut.validate(testDataset, testMetadataBlocks)).not.toThrow()
213-
})
214-
215157
test('should raise a controlled vocabulary error when a controlled vocabulary field has an invalid format', () => {
216158
const testDataset = createDatasetDTO(
217159
undefined,

0 commit comments

Comments
 (0)