Skip to content

Commit cc77995

Browse files
committed
save datasetType supplied in "create dataset" JSON #359
1 parent 68fcaa7 commit cc77995

File tree

8 files changed

+51
-14
lines changed

8 files changed

+51
-14
lines changed

src/datasets/domain/repositories/IDatasetsRepository.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ export interface IDatasetsRepository {
4444
createDataset(
4545
newDataset: DatasetDTO,
4646
datasetMetadataBlocks: MetadataBlock[],
47-
collectionId: string
47+
collectionId: string,
48+
datasetType?: string
4849
): Promise<CreatedDatasetIdentifiers>
4950
publishDataset(datasetId: number | string, versionUpdateType: VersionUpdateType): Promise<void>
5051
updateDataset(

src/datasets/domain/useCases/CreateDataset.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,16 @@ export class CreateDataset extends DatasetWriteUseCase<CreatedDatasetIdentifiers
2727
*/
2828
async execute(
2929
newDataset: DatasetDTO,
30-
collectionId = ROOT_COLLECTION_ID
30+
collectionId = ROOT_COLLECTION_ID,
31+
datasetType?: string
3132
): Promise<CreatedDatasetIdentifiers> {
3233
const metadataBlocks = await this.getNewDatasetMetadataBlocks(newDataset)
3334
this.getNewDatasetValidator().validate(newDataset, metadataBlocks)
34-
return this.getDatasetsRepository().createDataset(newDataset, metadataBlocks, collectionId)
35+
return this.getDatasetsRepository().createDataset(
36+
newDataset,
37+
metadataBlocks,
38+
collectionId,
39+
datasetType
40+
)
3541
}
3642
}

src/datasets/infra/repositories/DatasetsRepository.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,11 +203,16 @@ export class DatasetsRepository extends ApiRepository implements IDatasetsReposi
203203
public async createDataset(
204204
newDataset: DatasetDTO,
205205
datasetMetadataBlocks: MetadataBlock[],
206-
collectionId: string
206+
collectionId: string,
207+
datasetType?: string
207208
): Promise<CreatedDatasetIdentifiers> {
208209
return this.doPost(
209210
`/dataverses/${collectionId}/datasets`,
210-
transformDatasetModelToNewDatasetRequestPayload(newDataset, datasetMetadataBlocks)
211+
transformDatasetModelToNewDatasetRequestPayload(
212+
newDataset,
213+
datasetMetadataBlocks,
214+
datasetType
215+
)
211216
)
212217
.then((response) => {
213218
const responseData = response.data.data

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export interface NewDatasetRequestPayload {
3535
license?: DatasetLicense
3636
metadataBlocks: Record<string, MetadataBlockRequestPayload>
3737
}
38+
datasetType?: string
3839
}
3940

4041
export interface MetadataBlockRequestPayload {
@@ -96,9 +97,11 @@ export const transformDatasetModelToUpdateDatasetRequestPayload = (
9697

9798
export const transformDatasetModelToNewDatasetRequestPayload = (
9899
dataset: DatasetDTO,
99-
metadataBlocks: MetadataBlock[]
100+
metadataBlocks: MetadataBlock[],
101+
datasetType?: string
100102
): NewDatasetRequestPayload => {
101103
return {
104+
datasetType: datasetType,
102105
datasetVersion: {
103106
...(dataset.license && { license: dataset.license }),
104107
metadataBlocks: transformMetadataBlockModelsToRequestPayload(

test/functional/datasets/PublishDataset.test.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ import {
1212
waitForNoLocks,
1313
deletePublishedDatasetViaApi
1414
} from '../../testHelpers/datasets/datasetHelper'
15+
import { ROOT_COLLECTION_ID } from '../../../src/collections/domain/models/Collection'
16+
17+
// "dataset" is the default so this is equivalent to not passing a datasetType
18+
const datasetType = 'dataset'
1519

1620
const testNewDataset = {
1721
license: {
@@ -61,7 +65,11 @@ describe('execute', () => {
6165
})
6266

6367
test('should successfully publish a dataset', async () => {
64-
const createdDatasetIdentifiers = await createDataset.execute(testNewDataset)
68+
const createdDatasetIdentifiers = await createDataset.execute(
69+
testNewDataset,
70+
ROOT_COLLECTION_ID,
71+
datasetType
72+
)
6573

6674
const response = await publishDataset.execute(
6775
createdDatasetIdentifiers.persistentId,
@@ -74,7 +82,11 @@ describe('execute', () => {
7482
})
7583

7684
test('should successfully publish a dataset with update current version', async () => {
77-
const createdDatasetIdentifiers = await createDataset.execute(testNewDataset)
85+
const createdDatasetIdentifiers = await createDataset.execute(
86+
testNewDataset,
87+
ROOT_COLLECTION_ID,
88+
datasetType
89+
)
7890

7991
const firstPublishResponse = await publishDataset.execute(
8092
createdDatasetIdentifiers.persistentId,

test/testHelpers/datasets/datasetHelper.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -694,9 +694,11 @@ export const createDatasetMetadataBlockModel = (): MetadataBlock => {
694694
}
695695

696696
export const createNewDatasetRequestPayload = (
697-
license?: DatasetLicense
697+
license?: DatasetLicense,
698+
datasetType?: string
698699
): NewDatasetRequestPayload => {
699700
return {
701+
datasetType: datasetType,
700702
datasetVersion: {
701703
...(license && { license }),
702704
metadataBlocks: {

test/unit/datasets/CreateDataset.test.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ describe('execute', () => {
5151
expect(datasetsRepositoryStub.createDataset).toHaveBeenCalledWith(
5252
testDataset,
5353
testMetadataBlocks,
54-
ROOT_COLLECTION_ID
54+
ROOT_COLLECTION_ID,
55+
undefined
5556
)
5657
})
5758

@@ -111,7 +112,8 @@ describe('execute', () => {
111112
expect(datasetsRepositoryStub.createDataset).toHaveBeenCalledWith(
112113
testDataset,
113114
testMetadataBlocks,
114-
ROOT_COLLECTION_ID
115+
ROOT_COLLECTION_ID,
116+
undefined
115117
)
116118
})
117119

test/unit/datasets/datasetTransformers.test.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ describe('transformNewDatasetModelToRequestPayload', () => {
1616
expect(actual).toEqual(expectedNewDatasetRequestPayload)
1717
})
1818

19-
it('should correctly transform a new dataset model to a new dataset request payload when it contains a license', () => {
19+
it('should correctly transform a new dataset model to a new dataset request payload when it contains a license and a datasetType', () => {
2020
const testDataset = createDatasetDTO(
2121
undefined,
2222
undefined,
@@ -26,10 +26,16 @@ describe('transformNewDatasetModelToRequestPayload', () => {
2626
createDatasetLicenseModel()
2727
)
2828
const testMetadataBlocks = [createDatasetMetadataBlockModel()]
29+
const datasetType = 'software'
2930
const expectedNewDatasetRequestPayload = createNewDatasetRequestPayload(
30-
createDatasetLicenseModel()
31+
createDatasetLicenseModel(),
32+
datasetType
33+
)
34+
const actual = transformDatasetModelToNewDatasetRequestPayload(
35+
testDataset,
36+
testMetadataBlocks,
37+
datasetType
3138
)
32-
const actual = transformDatasetModelToNewDatasetRequestPayload(testDataset, testMetadataBlocks)
3339

3440
expect(actual).toEqual(expectedNewDatasetRequestPayload)
3541
})

0 commit comments

Comments
 (0)