Skip to content

Commit 3ba91df

Browse files
committed
feat: add custom terms of use to Dataset model
1 parent c789d0f commit 3ba91df

File tree

6 files changed

+86
-9
lines changed

6 files changed

+86
-9
lines changed

src/datasets/domain/models/Dataset.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,14 @@ export interface TermsOfUse {
4545
contactForAccess?: string
4646
sizeOfCollection?: string
4747
studyCompletion?: string
48+
termsOfUse?: string
49+
confidentialDeclaration?: string
50+
specialPermissions?: string
51+
restrictions?: string
52+
citationRequirements?: string
53+
depositorRequirements?: string
54+
conditions?: string
55+
disclaimer?: string
4856
}
4957

5058
export type DatasetMetadataBlocks = [CitationMetadataBlock, ...DatasetMetadataBlock[]]

src/datasets/infra/repositories/transformers/DatasetPayload.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ export interface DatasetPayload {
2424
contactForAccess?: string
2525
sizeOfCollection?: string
2626
studyCompletion?: string
27+
termsOfUse?: string
28+
confidentialDeclaration?: string
29+
specialPermissions?: string
30+
restrictions?: string
31+
citationRequirements?: string
32+
depositorRequirements?: string
33+
conditions?: string
34+
disclaimer?: string
2735
files: FilePayload[]
2836
isPartOf: OwnerNodePayload
2937
}

src/datasets/infra/repositories/transformers/datasetTransformers.ts

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -236,13 +236,30 @@ export const transformVersionPayloadToDataset = (
236236
},
237237
termsOfUse: {
238238
fileAccessRequest: versionPayload.fileAccessRequest,
239-
termsOfAccess: versionPayload.termsOfAccess,
240-
dataAccessPlace: versionPayload.dataAccessPlace,
241-
originalArchive: versionPayload.originalArchive,
242-
availabilityStatus: versionPayload.availabilityStatus,
243-
contactForAccess: versionPayload.contactForAccess,
244-
sizeOfCollection: versionPayload.sizeOfCollection,
245-
studyCompletion: versionPayload.studyCompletion
239+
termsOfAccess: transformPayloadText(keepRawFields, versionPayload.termsOfAccess),
240+
dataAccessPlace: transformPayloadText(keepRawFields, versionPayload.dataAccessPlace),
241+
originalArchive: transformPayloadText(keepRawFields, versionPayload.originalArchive),
242+
availabilityStatus: transformPayloadText(keepRawFields, versionPayload.availabilityStatus),
243+
contactForAccess: transformPayloadText(keepRawFields, versionPayload.contactForAccess),
244+
sizeOfCollection: transformPayloadText(keepRawFields, versionPayload.sizeOfCollection),
245+
studyCompletion: transformPayloadText(keepRawFields, versionPayload.studyCompletion),
246+
termsOfUse: transformPayloadText(keepRawFields, versionPayload.termsOfUse),
247+
confidentialDeclaration: transformPayloadText(
248+
keepRawFields,
249+
versionPayload.confidentialDeclaration
250+
),
251+
specialPermissions: transformPayloadText(keepRawFields, versionPayload.specialPermissions),
252+
restrictions: transformPayloadText(keepRawFields, versionPayload.restrictions),
253+
citationRequirements: transformPayloadText(
254+
keepRawFields,
255+
versionPayload.citationRequirements
256+
),
257+
depositorRequirements: transformPayloadText(
258+
keepRawFields,
259+
versionPayload.depositorRequirements
260+
),
261+
conditions: transformPayloadText(keepRawFields, versionPayload.conditions),
262+
disclaimer: transformPayloadText(keepRawFields, versionPayload.disclaimer)
246263
},
247264
metadataBlocks: transformPayloadToDatasetMetadataBlocks(
248265
versionPayload.metadataBlocks,
@@ -281,6 +298,16 @@ const transformPayloadToDatasetLicense = (licensePayload: LicensePayload): Datas
281298
return datasetLicense
282299
}
283300

301+
const transformPayloadText = (
302+
keepRawFields: boolean,
303+
text: string | undefined
304+
): string | undefined => {
305+
if (!text) {
306+
return undefined
307+
}
308+
return keepRawFields ? text : transformHtmlToMarkdown(text)
309+
}
310+
284311
const transformPayloadToDatasetMetadataBlocks = (
285312
metadataBlocksPayload: MetadataBlocksPayload,
286313
keepRawFields: boolean

test/environment/.env

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ SOLR_VERSION=9.3.0
44
DATAVERSE_IMAGE_REGISTRY=docker.io
55
DATAVERSE_IMAGE_TAG=unstable
66
DATAVERSE_BOOTSTRAP_TIMEOUT=5m
7+
STORAGE_DIR=/tmp/dataverse

test/functional/datasets/GetDataset.test.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import { ApiConfig, createDataset, getDataset, ReadError } from '../../../src'
22
import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig'
33
import { DatasetDescription } from '../../../src/datasets/domain/models/Dataset'
4-
import { deleteUnpublishedDatasetViaApi } from '../../testHelpers/datasets/datasetHelper'
4+
import {
5+
createDatasetVersionPayload,
6+
deleteUnpublishedDatasetViaApi
7+
} from '../../testHelpers/datasets/datasetHelper'
58
import { TestConstants } from '../../testHelpers/TestConstants'
9+
import { transformVersionPayloadToDataset } from '../../../src/datasets/infra/repositories/transformers/datasetTransformers'
610

711
const testNewDataset = {
812
metadataBlockValues: [
@@ -90,6 +94,19 @@ describe('execute', () => {
9094
await deleteUnpublishedDatasetViaApi(createdDatasetIdentifiers.numericId)
9195
})
9296

97+
test('should return terms of use fields in markdown format when keepRawFields is false', async () => {
98+
const versionPayload = createDatasetVersionPayload()
99+
versionPayload.termsOfAccess = 'Hello <b>world</b>'
100+
const dataset = transformVersionPayloadToDataset(versionPayload, false)
101+
expect(dataset.termsOfUse.termsOfAccess).toBe('Hello **world**')
102+
})
103+
104+
test('should return terms of use fields in html format when keepRawFields is true', async () => {
105+
const versionPayload = createDatasetVersionPayload()
106+
const dataset = transformVersionPayloadToDataset(versionPayload, true)
107+
expect(dataset.termsOfUse.termsOfAccess).toBe(versionPayload.termsOfAccess)
108+
})
109+
93110
test('should not return metadata fields in markdown format when keepRawFields is true', async () => {
94111
const createdDatasetIdentifiers = await createDataset.execute(testNewDataset)
95112

test/testHelpers/datasets/datasetHelper.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,15 @@ export const createDatasetModel = (
6060
availabilityStatus: 'Availability status',
6161
contactForAccess: 'Contact for access',
6262
sizeOfCollection: 'Size of collection',
63-
studyCompletion: 'Study completion'
63+
studyCompletion: 'Study completion',
64+
termsOfUse: 'Terms of use',
65+
confidentialDeclaration: 'Confidential declaration',
66+
specialPermissions: 'Special permissions',
67+
restrictions: 'Restrictions',
68+
citationRequirements: 'Citation requirements',
69+
depositorRequirements: 'Depositor requirements',
70+
conditions: 'Conditions',
71+
disclaimer: 'Disclaimer'
6472
},
6573
publicationDate: DATASET_PUBLICATION_DATE_STR,
6674
metadataBlocks: [
@@ -129,6 +137,14 @@ export const createDatasetVersionPayload = (
129137
contactForAccess: 'Contact for access',
130138
sizeOfCollection: 'Size of collection',
131139
studyCompletion: 'Study completion',
140+
termsOfUse: 'Terms of use',
141+
confidentialDeclaration: 'Confidential declaration',
142+
specialPermissions: 'Special permissions',
143+
restrictions: 'Restrictions',
144+
citationRequirements: 'Citation requirements',
145+
depositorRequirements: 'Depositor requirements',
146+
conditions: 'Conditions',
147+
disclaimer: 'Disclaimer',
132148
metadataBlocks: {
133149
citation: {
134150
name: 'citation',

0 commit comments

Comments
 (0)