Skip to content

Commit

Permalink
feat: add custom terms of use to Dataset model
Browse files Browse the repository at this point in the history
  • Loading branch information
ekraffmiller committed Jan 30, 2025
1 parent c789d0f commit 3ba91df
Show file tree
Hide file tree
Showing 6 changed files with 86 additions and 9 deletions.
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
confidentialDeclaration?: 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
confidentialDeclaration?: 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),
confidentialDeclaration: transformPayloadText(
keepRawFields,
versionPayload.confidentialDeclaration
),
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
1 change: 1 addition & 0 deletions test/environment/.env
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ SOLR_VERSION=9.3.0
DATAVERSE_IMAGE_REGISTRY=docker.io
DATAVERSE_IMAGE_TAG=unstable
DATAVERSE_BOOTSTRAP_TIMEOUT=5m
STORAGE_DIR=/tmp/dataverse
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
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',
confidentialDeclaration: 'Confidential 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',
confidentialDeclaration: 'Confidential declaration',
specialPermissions: 'Special permissions',
restrictions: 'Restrictions',
citationRequirements: 'Citation requirements',
depositorRequirements: 'Depositor requirements',
conditions: 'Conditions',
disclaimer: 'Disclaimer',
metadataBlocks: {
citation: {
name: 'citation',
Expand Down

0 comments on commit 3ba91df

Please sign in to comment.