Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/datasets/domain/models/Dataset.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,14 @@ export interface TermsOfUse {
contactForAccess?: string
sizeOfCollection?: string
studyCompletion?: string
termsOfUse?: string
confidentialityDeclaration?: string
specialPermissions?: string
restrictions?: string
citationRequirements?: string
depositorRequirements?: string
conditions?: string
disclaimer?: string
}

export type DatasetMetadataBlocks = [CitationMetadataBlock, ...DatasetMetadataBlock[]]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@ export interface DatasetPayload {
contactForAccess?: string
sizeOfCollection?: string
studyCompletion?: string
termsOfUse?: string
confidentialityDeclaration?: string
specialPermissions?: string
restrictions?: string
citationRequirements?: string
depositorRequirements?: string
conditions?: string
disclaimer?: string
files: FilePayload[]
isPartOf: OwnerNodePayload
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -236,13 +236,30 @@ export const transformVersionPayloadToDataset = (
},
termsOfUse: {
fileAccessRequest: versionPayload.fileAccessRequest,
termsOfAccess: versionPayload.termsOfAccess,
dataAccessPlace: versionPayload.dataAccessPlace,
originalArchive: versionPayload.originalArchive,
availabilityStatus: versionPayload.availabilityStatus,
contactForAccess: versionPayload.contactForAccess,
sizeOfCollection: versionPayload.sizeOfCollection,
studyCompletion: versionPayload.studyCompletion
termsOfAccess: transformPayloadText(keepRawFields, versionPayload.termsOfAccess),
dataAccessPlace: transformPayloadText(keepRawFields, versionPayload.dataAccessPlace),
originalArchive: transformPayloadText(keepRawFields, versionPayload.originalArchive),
availabilityStatus: transformPayloadText(keepRawFields, versionPayload.availabilityStatus),
contactForAccess: transformPayloadText(keepRawFields, versionPayload.contactForAccess),
sizeOfCollection: transformPayloadText(keepRawFields, versionPayload.sizeOfCollection),
studyCompletion: transformPayloadText(keepRawFields, versionPayload.studyCompletion),
termsOfUse: transformPayloadText(keepRawFields, versionPayload.termsOfUse),
confidentialityDeclaration: transformPayloadText(
keepRawFields,
versionPayload.confidentialityDeclaration
),
specialPermissions: transformPayloadText(keepRawFields, versionPayload.specialPermissions),
restrictions: transformPayloadText(keepRawFields, versionPayload.restrictions),
citationRequirements: transformPayloadText(
keepRawFields,
versionPayload.citationRequirements
),
depositorRequirements: transformPayloadText(
keepRawFields,
versionPayload.depositorRequirements
),
conditions: transformPayloadText(keepRawFields, versionPayload.conditions),
disclaimer: transformPayloadText(keepRawFields, versionPayload.disclaimer)
},
metadataBlocks: transformPayloadToDatasetMetadataBlocks(
versionPayload.metadataBlocks,
Expand Down Expand Up @@ -281,6 +298,16 @@ const transformPayloadToDatasetLicense = (licensePayload: LicensePayload): Datas
return datasetLicense
}

const transformPayloadText = (
keepRawFields: boolean,
text: string | undefined
): string | undefined => {
if (!text) {
return undefined
}
return keepRawFields ? text : transformHtmlToMarkdown(text)
}

const transformPayloadToDatasetMetadataBlocks = (
metadataBlocksPayload: MetadataBlocksPayload,
keepRawFields: boolean
Expand Down
19 changes: 18 additions & 1 deletion test/functional/datasets/GetDataset.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import { ApiConfig, createDataset, getDataset, ReadError } from '../../../src'
import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig'
import { DatasetDescription } from '../../../src/datasets/domain/models/Dataset'
import { deleteUnpublishedDatasetViaApi } from '../../testHelpers/datasets/datasetHelper'
import {
createDatasetVersionPayload,
deleteUnpublishedDatasetViaApi
} from '../../testHelpers/datasets/datasetHelper'
import { TestConstants } from '../../testHelpers/TestConstants'
import { transformVersionPayloadToDataset } from '../../../src/datasets/infra/repositories/transformers/datasetTransformers'

const testNewDataset = {
metadataBlockValues: [
Expand Down Expand Up @@ -90,6 +94,19 @@ describe('execute', () => {
await deleteUnpublishedDatasetViaApi(createdDatasetIdentifiers.numericId)
})

test('should return terms of use fields in markdown format when keepRawFields is false', async () => {
const versionPayload = createDatasetVersionPayload()
versionPayload.termsOfAccess = 'Hello <b>world</b>'
const dataset = transformVersionPayloadToDataset(versionPayload, false)
expect(dataset.termsOfUse.termsOfAccess).toBe('Hello **world**')
})

test('should return terms of use fields in html format when keepRawFields is true', async () => {
const versionPayload = createDatasetVersionPayload()
const dataset = transformVersionPayloadToDataset(versionPayload, true)
expect(dataset.termsOfUse.termsOfAccess).toBe(versionPayload.termsOfAccess)
})

test('should not return metadata fields in markdown format when keepRawFields is true', async () => {
const createdDatasetIdentifiers = await createDataset.execute(testNewDataset)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ describe('execute', () => {
} catch (error) {
throw new Error('Should not raise an error')
} finally {
expect(metadataFieldInfos?.length).toBe(59)
expect(metadataFieldInfos?.length).toBe(64)
expect(metadataFieldInfos?.[0].name).toBe('authorName')
expect(metadataFieldInfos?.[0].displayName).toBe('Author Name')
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ describe('execute', () => {
throw new Error('Should not raise an error')
} finally {
expect(metadataBlocks).not.toBeNull()
expect(metadataBlocks?.length).toBe(6)
expect(metadataBlocks?.length).toBe(7)
expect(metadataBlocks?.[0].metadataFields.title.name).toBe('title')
}
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ describe('MetadataBlocksRepository', () => {
describe('getAllMetadataBlocks', () => {
test('should return all metadata blocks', async () => {
const actual = await sut.getAllMetadataBlocks()
expect(actual.length).toBe(6)
expect(actual.length).toBe(7)
expect(actual[0].name).toBe(citationMetadataBlockName)
expect(actual[0].metadataFields.title.name).toBe('title')
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ describe('getAllFacetableMetadataFields', () => {
test('should return all facetable metadata fields', async () => {
const actual = await sut.getAllFacetableMetadataFields()

expect(actual.length).toBe(59)
expect(actual.length).toBe(64)
expect(actual[0].name).toBe('authorName')
expect(actual[0].displayName).toBe('Author Name')
})
Expand Down
18 changes: 17 additions & 1 deletion test/testHelpers/datasets/datasetHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,15 @@ export const createDatasetModel = (
availabilityStatus: 'Availability status',
contactForAccess: 'Contact for access',
sizeOfCollection: 'Size of collection',
studyCompletion: 'Study completion'
studyCompletion: 'Study completion',
termsOfUse: 'Terms of use',
confidentialityDeclaration: 'Confidentiality declaration',
specialPermissions: 'Special permissions',
restrictions: 'Restrictions',
citationRequirements: 'Citation requirements',
depositorRequirements: 'Depositor requirements',
conditions: 'Conditions',
disclaimer: 'Disclaimer'
},
publicationDate: DATASET_PUBLICATION_DATE_STR,
metadataBlocks: [
Expand Down Expand Up @@ -129,6 +137,14 @@ export const createDatasetVersionPayload = (
contactForAccess: 'Contact for access',
sizeOfCollection: 'Size of collection',
studyCompletion: 'Study completion',
termsOfUse: 'Terms of use',
confidentialityDeclaration: 'Confidentiality declaration',
specialPermissions: 'Special permissions',
restrictions: 'Restrictions',
citationRequirements: 'Citation requirements',
depositorRequirements: 'Depositor requirements',
conditions: 'Conditions',
disclaimer: 'Disclaimer',
metadataBlocks: {
citation: {
name: 'citation',
Expand Down