diff --git a/src/app/record/components/work-external-identifiers-edit/work-external-identifiers-edit.component.html b/src/app/record/components/work-external-identifiers-edit/work-external-identifiers-edit.component.html index 37e48a5332..6a9bebaa27 100644 --- a/src/app/record/components/work-external-identifiers-edit/work-external-identifiers-edit.component.html +++ b/src/app/record/components/work-external-identifiers-edit/work-external-identifiers-edit.component.html @@ -253,8 +253,8 @@ i18n="@@works.onlyIdentifierTypesFundedBy" *ngIf="externalIdForm.hasError('funded_by_invalid')" > - Only identifier types "grant number", "doi", "uri" or "proposal id" are - allowed when using "funded-by" identifiers { + let formBuilder: UntypedFormBuilder + + beforeEach(() => { + formBuilder = new UntypedFormBuilder() + }) + + function buildForm( + externalIdentifierType: string, + externalRelationship: string + ): UntypedFormGroup { + const form = formBuilder.group({ + externalIdentifierType: [externalIdentifierType], + externalRelationship: [externalRelationship], + }) + form.setValidators([WorkIdentifiers.fundedByInvalidRelationship()]) + form.updateValueAndValidity() + return form + } + + it('allows rrid identifiers on a funded-by relationship', () => { + const form = buildForm('rrid', WorkRelationships['funded-by']) + expect(form.hasError('funded_by_invalid')).toBeFalse() + }) + + it('allows the previously supported identifier types on a funded-by relationship', () => { + ;['grant_number', 'doi', 'uri', 'proposal-id'].forEach((type) => { + const form = buildForm(type, WorkRelationships['funded-by']) + expect(form.hasError('funded_by_invalid')).toBeFalse() + }) + }) + + it('rejects unsupported identifier types on a funded-by relationship', () => { + ;['isbn', 'handle', 'other-id', 'source-work-id'].forEach((type) => { + const form = buildForm(type, WorkRelationships['funded-by']) + expect(form.hasError('funded_by_invalid')).toBeTrue() + }) + }) + + it('does not restrict identifier types on other relationships', () => { + const form = buildForm('isbn', WorkRelationships.self) + expect(form.hasError('funded_by_invalid')).toBeFalse() + }) +}) diff --git a/src/app/shared/validators/work-identifiers/work-identifiers.validator.ts b/src/app/shared/validators/work-identifiers/work-identifiers.validator.ts index 1f90fa0019..23af9f402d 100644 --- a/src/app/shared/validators/work-identifiers/work-identifiers.validator.ts +++ b/src/app/shared/validators/work-identifiers/work-identifiers.validator.ts @@ -5,7 +5,7 @@ export class WorkIdentifiers { return (c: AbstractControl): { [key: string]: boolean } | null => { if (c.get('externalRelationship')?.value === 'funded-by') { if ( - ['grant_number', 'doi', 'uri', 'proposal-id'].indexOf( + ['grant_number', 'doi', 'uri', 'proposal-id', 'rrid'].indexOf( c.get('externalIdentifierType')?.value ) >= 0 ) { diff --git a/src/locale/messages.source.xlf b/src/locale/messages.source.xlf index 92e055a87e..8593917f47 100644 --- a/src/locale/messages.source.xlf +++ b/src/locale/messages.source.xlf @@ -14327,7 +14327,7 @@ - Only identifier types "grant number", "doi", "uri" or "proposal id" are allowed when using "funded-by" identifiers + Only identifier types "grant number", "doi", "RRID", "uri" or "proposal id" are allowed when using "funded-by" identifiers works.onlyIdentifierTypesFundedBy src/app/record/components/work-external-identifiers-edit/work-external-identifiers-edit.component.html diff --git a/src/locale/messages.xlf b/src/locale/messages.xlf index 337d12fbbb..0ec7740d6f 100644 --- a/src/locale/messages.xlf +++ b/src/locale/messages.xlf @@ -13562,7 +13562,7 @@ - Only identifier types "grant number", "doi", "uri" or "proposal id" are allowed when using "funded-by" identifiers + Only identifier types "grant number", "doi", "RRID", "uri" or "proposal id" are allowed when using "funded-by" identifiers src/app/record/components/work-external-identifiers-edit/work-external-identifiers-edit.component.html 255,257 diff --git a/src/locale/properties/works/works.en.properties b/src/locale/properties/works/works.en.properties index b5e983d119..cca64c5629 100644 --- a/src/locale/properties/works/works.en.properties +++ b/src/locale/properties/works/works.en.properties @@ -142,7 +142,7 @@ works.addPubmed=Add PubMed ID works.addBibtex=Add BibTeX works.worksToExport=works to export works.pleaseEnterExternalID=Please enter an external ID -works.onlyIdentifierTypesFundedBy=Only identifier types "grant number", "doi", "uri" or "proposal id" are allowed when using "funded-by" identifiers +works.onlyIdentifierTypesFundedBy=Only identifier types "grant number", "doi", "RRID", "uri" or "proposal id" are allowed when using "funded-by" identifiers works.publisher=Publisher works.conferenceTitle=Conference title works.bookTitle=Book title