Skip to content

Commit 1421988

Browse files
authored
Merge pull request #385 from IQSS/fix/date-validation-remove
Removed date field validations used in create and update dataset use cases
2 parents 0931fa8 + bb9affc commit 1421988

File tree

5 files changed

+5
-127
lines changed

5 files changed

+5
-127
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ This changelog follows the principles of [Keep a Changelog](https://keepachangel
1414

1515
### Removed
1616

17+
- Removed date fields validations in create and update dataset use cases, since validation is already handled in the backend and SPA frontend (other clients should perform client side validation also). This avoids duplicated logic and keeps the package focused on its core responsibility.
18+
1719
[Unreleased]: https://github.com/IQSS/dataverse-client-javascript/compare/v2.1.0...develop
1820

1921
---

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/integration/collections/CollectionsRepository.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -996,8 +996,8 @@ describe('CollectionsRepository', () => {
996996
expect(updatedCollection.alias).toBe(testUpdatedCollectionAlias)
997997
expect(updatedCollection.name).toBe(updatedCollectionName)
998998
expect(updatedCollection.affiliation).toBe(updatedCollectionAffiliation)
999-
expect(updatedCollection.inputLevels?.length).toBe(1)
1000-
const updatedInputLevel = updatedCollection.inputLevels?.[0]
999+
expect(updatedCollection.inputLevels?.length).toBe(2)
1000+
const updatedInputLevel = updatedCollection.inputLevels?.[1]
10011001
expect(updatedInputLevel?.datasetFieldName).toBe('country')
10021002
expect(updatedInputLevel?.include).toBe(true)
10031003
expect(updatedInputLevel?.required).toBe(false)

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)