diff --git a/src/docmap-parser.test.ts b/src/docmap-parser.test.ts index 3e24837..f00c9f3 100644 --- a/src/docmap-parser.test.ts +++ b/src/docmap-parser.test.ts @@ -139,6 +139,23 @@ describe('docmap-parser', () => { }); }); + it('detect when a republish is inferred from a step', () => { + const parsedData = parseDocMap(fixtures.inferRepublishedPreprint()); + + expect(parsedData.versions.length).toStrictEqual(1); + expect(parsedData.versions[0]).toMatchObject({ + doi: 'elife/12345.1', + id: 'elife/12345.1', + versionIdentifier: '1', + preprint: { + doi: 'preprint/article1', + id: 'preprint/article1', + versionIdentifier: '4', + }, + license: 'http://creativecommons.org/licenses/by/4.0/', + }); + }); + it('finds a revised preprint from a docmap', () => { const parsedData = parseDocMap(fixtures.preprintAndRevision()); diff --git a/src/docmap-parser.ts b/src/docmap-parser.ts index 8f186bd..a89a58c 100644 --- a/src/docmap-parser.ts +++ b/src/docmap-parser.ts @@ -250,6 +250,7 @@ const republishPreprintAs = (expression: Expression, preprint: ReviewedPreprint, newPreprint.doi = expression.doi; newPreprint.versionIdentifier = expression.versionIdentifier; newPreprint.publishedDate = expression.published; + newPreprint.license = expression.license; }; const findAndFlatMapAllEvaluations = (actions: Action[]): Evaluation[] => actions.flatMap((action) => action.outputs.map((output) => { diff --git a/src/test-fixtures/docmapGenerators.ts b/src/test-fixtures/docmapGenerators.ts index c0049de..31d6d45 100644 --- a/src/test-fixtures/docmapGenerators.ts +++ b/src/test-fixtures/docmapGenerators.ts @@ -215,6 +215,19 @@ export const fixtures = { return generateDocMap('test', publisher, firstStep); }, + inferRepublishedPreprint: (): DocMap => { + const preprintv1 = generatePreprint('preprint/article1', new Date('2022-03-01'), undefined, '4', undefined); + const preprintv2 = generatePreprint('elife/12345.1', new Date('2022-04-12'), undefined, '1', undefined, 'http://creativecommons.org/licenses/by/4.0/'); + + const firstStep = generateStep( + [preprintv1], + [generateAction([], [preprintv2])], + [], + ); + + return generateDocMap('test', publisher, firstStep); + }, + preprintAndRevision: (): DocMap => { const preprintv1 = generatePreprint('preprint/article1', new Date('2022-03-01'), undefined, '1'); const preprintv2 = generatePreprint('preprint/article1v2', new Date('2022-06-01'), undefined, '2');