Skip to content
This repository was archived by the owner on Apr 14, 2026. It is now read-only.

Commit 5aba7e7

Browse files
authored
[ENG-4293] Fix node license validation (#1996)
* fix node license validation * remove comments * add test * revert changes to copyMetadataChangesToDraft
1 parent e497991 commit 5aba7e7

2 files changed

Lines changed: 41 additions & 2 deletions

File tree

app/packages/registration-schema/validations.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export function buildValidation(groups: SchemaBlockGroup[], node?: NodeModel | D
8080
}
8181

8282
export function validateNodeLicense() {
83-
return async (_: unknown, __: unknown, ___: unknown, changes: LicensedContent, content: LicensedContent) => {
83+
return async (_: unknown, newValue: any, __: unknown, changes: LicensedContent, content: LicensedContent) => {
8484
let validateLicenseTarget = await content.license;
8585
let validateNodeLicenseTarget = content.nodeLicense;
8686
if (changes?.license && Object.keys(changes.license).length
@@ -110,7 +110,7 @@ export function validateNodeLicense() {
110110

111111
const missingFieldsList: Array<keyof NodeLicense> = [];
112112
for (const item of validateLicenseTarget.requiredFields) {
113-
if (!validateNodeLicenseTarget || !validateNodeLicenseTarget[item]) {
113+
if (!newValue || !newValue[item]) {
114114
missingFieldsList.push(item);
115115
}
116116
}

tests/engines/registries/acceptance/draft/draft-test.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,4 +1197,43 @@ module('Registries | Acceptance | draft form', hooks => {
11971197
assert.dom('[data-test-link="1-first-page-of-test-schema"] > [data-test-icon]')
11981198
.hasClass('fa-check-circle', 'page 1 is now valid');
11991199
});
1200+
1201+
// Test case for bug: ENG-4293
1202+
test('validations: year and copyrightHolder validation succeeds after navigating to the next page',async function(
1203+
this: DraftFormTestContext, assert,
1204+
) {
1205+
const initiator = server.create('user', 'loggedIn');
1206+
const registrationSchema = server.schema.registrationSchemas.find('testSchema');
1207+
const registration = server.create(
1208+
'draft-registration',
1209+
{
1210+
registrationSchema,
1211+
initiator,
1212+
branchedFrom: this.branchedFrom,
1213+
license: server.schema.licenses.findBy({ id: '5c252c8e0989e100220edb7d' }), // MIT License
1214+
nodeLicense: { year: '2023', copyrightHolders: 'OSF' },
1215+
},
1216+
);
1217+
const subjects = [server.create('subject')];
1218+
registration.update({ subjects });
1219+
1220+
await visit(`/registries/drafts/${registration.id}/metadata`);
1221+
await click('[data-test-metadata-tags]');
1222+
await fillIn('[data-test-metadata-tags] input', 'newjeans');
1223+
await triggerKeyEvent('[data-test-metadata-tags] input', 'keydown', 'Enter');
1224+
await click('[data-test-goto-next-page]');
1225+
assert.dom('[data-test-link="metadata"] > [data-test-icon]')
1226+
.hasClass('fa-check-circle', 'metadata page is marked valid');
1227+
await click('[data-test-goto-metadata]');
1228+
await fillIn('[data-test-required-field="copyrightHolders"]', '');
1229+
await blur('[data-test-required-field="copyrightHolders"]');
1230+
const validationErrorMsg = t('validationErrors.node_license_missing_fields',
1231+
{ missingFields: 'Copyright Holders', numOfFields: 1 }).toString();
1232+
assert.dom('[data-test-validation-errors="nodeLicense"]')
1233+
.containsText(validationErrorMsg,
1234+
'NodeLicense validation error when copyright holders is empty');
1235+
await click('[data-test-goto-next-page]');
1236+
assert.dom('[data-test-link="metadata"] > [data-test-icon]')
1237+
.hasClass('fa-exclamation-circle', 'metadata page is marked invalid');
1238+
});
12001239
});

0 commit comments

Comments
 (0)