diff --git a/src/collections/domain/models/Collection.ts b/src/collections/domain/models/Collection.ts index cbcf01ca..586b054b 100644 --- a/src/collections/domain/models/Collection.ts +++ b/src/collections/domain/models/Collection.ts @@ -1,6 +1,7 @@ import { DvObjectOwnerNode } from '../../../core' import { CollectionContact } from './CollectionContact' import { CollectionType } from './CollectionType' +import { DatasetType } from '../../../datasets' export interface Collection { id: number @@ -13,6 +14,7 @@ export interface Collection { inputLevels?: CollectionInputLevel[] type: CollectionType contacts?: CollectionContact[] + allowedDatasetTypes?: DatasetType[] isMetadataBlockRoot: boolean isFacetRoot: boolean childCount: number diff --git a/src/collections/infra/repositories/transformers/CollectionPayload.ts b/src/collections/infra/repositories/transformers/CollectionPayload.ts index f478ca13..53ec59fd 100644 --- a/src/collections/infra/repositories/transformers/CollectionPayload.ts +++ b/src/collections/infra/repositories/transformers/CollectionPayload.ts @@ -10,6 +10,7 @@ export interface CollectionPayload { isPartOf: OwnerNodePayload inputLevels?: CollectionInputLevelPayload[] dataverseContacts?: CollectionContactPayload[] + allowedDatasetTypes?: AllowedDatasetTypePayload[] dataverseType: string isMetadataBlockRoot: boolean isFacetRoot: boolean @@ -26,3 +27,10 @@ export interface CollectionContactPayload { contactEmail: string displayOrder: number } + +export interface AllowedDatasetTypePayload { + id: number + name: string + displayName: string + description?: string +} diff --git a/src/collections/infra/repositories/transformers/collectionTransformers.ts b/src/collections/infra/repositories/transformers/collectionTransformers.ts index fa23b8ed..008c15cd 100644 --- a/src/collections/infra/repositories/transformers/collectionTransformers.ts +++ b/src/collections/infra/repositories/transformers/collectionTransformers.ts @@ -3,7 +3,8 @@ import { AxiosResponse } from 'axios' import { CollectionContactPayload, CollectionInputLevelPayload, - CollectionPayload + CollectionPayload, + AllowedDatasetTypePayload } from './CollectionPayload' import { transformPayloadToOwnerNode } from '../../../../core/infra/repositories/transformers/dvObjectOwnerNodeTransformer' import { CollectionFacet } from '../../../domain/models/CollectionFacet' @@ -13,7 +14,7 @@ import { CollectionItemSubset, CountPerObjectType } from '../../../domain/models/CollectionItemSubset' -import { DatasetPreview } from '../../../../datasets' +import { DatasetPreview, DatasetType } from '../../../../datasets' import { FilePreview } from '../../../../files' import { DatasetPreviewPayload } from '../../../../datasets/infra/repositories/transformers/DatasetPreviewPayload' import { FilePreviewPayload } from '../../../../files/infra/repositories/transformers/FilePreviewPayload' @@ -82,6 +83,11 @@ const transformPayloadToCollection = (collectionPayload: CollectionPayload): Col }), ...(collectionPayload.dataverseContacts && { contacts: transformContactsPayloadToContacts(collectionPayload.dataverseContacts) + }), + ...(collectionPayload.allowedDatasetTypes && { + allowedDatasetTypes: transformAllowedDatasetTypesPayloadToAllowedDatasetTypes( + collectionPayload.allowedDatasetTypes + ) }) } return collectionModel @@ -252,3 +258,14 @@ const transformContactsPayloadToContacts = ( displayOrder: contactPayload.displayOrder })) } + +const transformAllowedDatasetTypesPayloadToAllowedDatasetTypes = ( + allowedDatasetTypesPayload: AllowedDatasetTypePayload[] +): DatasetType[] => { + return allowedDatasetTypesPayload.map((allowedDatasetType) => ({ + id: allowedDatasetType.id, + name: allowedDatasetType.name, + displayName: allowedDatasetType.displayName, + description: allowedDatasetType.description + })) +} diff --git a/test/integration/collections/CollectionsRepository.test.ts b/test/integration/collections/CollectionsRepository.test.ts index 94b62311..861a970e 100644 --- a/test/integration/collections/CollectionsRepository.test.ts +++ b/test/integration/collections/CollectionsRepository.test.ts @@ -997,7 +997,7 @@ describe('CollectionsRepository', () => { // TODO: uncomment this test when https://github.com/IQSS/dataverse/issues/12027 is fixed // const expectedDatasetCitationFragment = `Admin, Dataverse; Owner, Dataverse, ${currentYear}, "Dataset created using the createDataset use case` const expectedDatasetDescription = 'Dataset created using the createDataset use case' - const expectedFileName = 'test-file-4.tab' + const expectedFileName = 'test-file-4.tsv' const expectedCollectionsName = 'Scientific Research' expect(actualFilePreview.checksum?.type).toBe('MD5') diff --git a/test/testHelpers/collections/collectionHelper.ts b/test/testHelpers/collections/collectionHelper.ts index b19b668f..bf79556a 100644 --- a/test/testHelpers/collections/collectionHelper.ts +++ b/test/testHelpers/collections/collectionHelper.ts @@ -45,6 +45,14 @@ export const createCollectionModel = (): Collection => { displayOrder: 0 } ], + allowedDatasetTypes: [ + { + id: 1, + name: 'review', + displayName: 'Review', + description: 'A review of a dataset compiled by the expert community.' + } + ], isMetadataBlockRoot: true, isFacetRoot: true, childCount: 0 @@ -75,6 +83,14 @@ export const createCollectionPayload = (): CollectionPayload => { displayOrder: 0 } ], + allowedDatasetTypes: [ + { + id: 1, + name: 'review', + displayName: 'Review', + description: 'A review of a dataset compiled by the expert community.' + } + ], isMetadataBlockRoot: true, isFacetRoot: true, childCount: 0