Skip to content

Commit f060ff0

Browse files
authored
Fix property between Role and Person for contributors (#52)
It should be: ``` { "@context": "https://doi.org/10.5063/schema/codemeta-2.0", "type": "SoftwareSourceCode", "contributor": [ { "type": "schema:Role", "schema:contributor": { "type": "Person", "givenName": "Jane" }, } ] } ``` instead of: ``` { "@context": "https://doi.org/10.5063/schema/codemeta-2.0", "type": "SoftwareSourceCode", "contributor": [ { "type": "schema:Role", "schema:author": { "type": "Person", "givenName": "Jane" }, } ] } ```
1 parent 29f932f commit f060ff0

File tree

2 files changed

+64
-6
lines changed

2 files changed

+64
-6
lines changed

cypress/integration/persons.js

+58
Original file line numberDiff line numberDiff line change
@@ -985,3 +985,61 @@ describe('Contributors', function () {
985985
cy.get('#contributor_2_givenName').should('have.value', 'Joe');
986986
});
987987
});
988+
989+
describe('One contributor with a role', function () {
990+
it('can be exported in both codemeta v2.0 and v3.0 versions', function () {
991+
cy.get('#name').type('My Test Software');
992+
993+
cy.get('#contributor_add').click();
994+
cy.get('#contributor_1_givenName').type('Jane');
995+
996+
cy.get('#contributor_1_role_add').click();
997+
cy.get('#contributor_1_roleName_0').type('Developer');
998+
cy.get('#contributor_1_startDate_0').type('2024-03-04');
999+
cy.get('#contributor_1_endDate_0').type('2024-04-03');
1000+
1001+
cy.get('#generateCodemetaV2').click();
1002+
cy.get('#codemetaText').then((elem) => JSON.parse(elem.text()))
1003+
.should('deep.equal', {
1004+
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
1005+
"type": "SoftwareSourceCode",
1006+
"name": "My Test Software",
1007+
"contributor": [
1008+
{
1009+
"id": "_:contributor_1",
1010+
"type": "Person",
1011+
"givenName": "Jane"
1012+
},
1013+
{
1014+
"type": "schema:Role",
1015+
"contributor": "_:contributor_1",
1016+
"schema:roleName": "Developer",
1017+
"schema:startDate": "2024-03-04",
1018+
"schema:endDate": "2024-04-03"
1019+
}
1020+
]
1021+
});
1022+
1023+
cy.get('#generateCodemetaV3').click();
1024+
cy.get('#codemetaText').then((elem) => JSON.parse(elem.text()))
1025+
.should('deep.equal', {
1026+
"@context": "https://w3id.org/codemeta/3.0",
1027+
"type": "SoftwareSourceCode",
1028+
"name": "My Test Software",
1029+
"contributor": [
1030+
{
1031+
"id": "_:contributor_1",
1032+
"type": "Person",
1033+
"givenName": "Jane"
1034+
},
1035+
{
1036+
"type": "Role",
1037+
"contributor": "_:contributor_1",
1038+
"roleName": "Developer",
1039+
"startDate": "2024-03-04",
1040+
"endDate": "2024-04-03"
1041+
}
1042+
]
1043+
});
1044+
});
1045+
});

js/codemeta_generation.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -181,26 +181,26 @@ function generateRole(id) {
181181
return doc;
182182
}
183183

184-
function generateRoles(idPrefix, person) {
184+
function generateRoles(property, idPrefix, person) {
185185
const roles = [];
186186
const roleNodes = document.querySelectorAll(`ul[id^=${idPrefix}_role_`);
187187
roleNodes.forEach(roleNode => {
188188
const role = generateRole(roleNode.id);
189-
role["schema:author"] = getDocumentId(person); // Prefix with "schema:" to prevent it from expanding into a list
189+
role[`schema:${property}`] = getDocumentId(person); // Prefix with "schema:" to prevent it from expanding into a list
190190
roles.push(role);
191191
});
192192
return roles;
193193
}
194194

195-
function generatePersons(prefix) {
195+
function generatePersons(property) {
196196
var persons = [];
197-
var nbPersons = getNbPersons(prefix);
197+
var nbPersons = getNbPersons(property);
198198

199199
for (let personId = 1; personId <= nbPersons; personId++) {
200-
const idPrefix = `${prefix}_${personId}`;
200+
const idPrefix = `${property}_${personId}`;
201201
const person = generatePerson(idPrefix);
202202
persons.push(person);
203-
const roles = generateRoles(idPrefix, person);
203+
const roles = generateRoles(property, idPrefix, person);
204204
if (roles.length > 0) {
205205
persons = persons.concat(roles);
206206
}

0 commit comments

Comments
 (0)