Skip to content

Commit 9060988

Browse files
committed
resolve merge conflicts
2 parents 9ab1045 + 4f3d824 commit 9060988

File tree

15 files changed

+129
-26
lines changed

15 files changed

+129
-26
lines changed

src/collections/domain/models/CollectionItemSubset.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ export interface CollectionItemSubset {
66
items: (CollectionPreview | DatasetPreview | FilePreview)[]
77
facets: CollectionItemsFacet[]
88
totalItemCount: number
9+
countPerObjectType: CountPerObjectType
910
}
1011

1112
export interface CollectionItemsFacet {
@@ -18,3 +19,9 @@ interface CollectionItemsFacetLabel {
1819
name: string
1920
count: number
2021
}
22+
23+
interface CountPerObjectType {
24+
dataverses: number
25+
datasets: number
26+
files: number
27+
}

src/collections/infra/repositories/CollectionsRepository.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ export enum GetCollectionItemsQueryParams {
5757
PER_PAGE = 'per_page',
5858
START = 'start',
5959
TYPE = 'type',
60-
FILTERQUERY = 'fq'
60+
FILTERQUERY = 'fq',
61+
SHOW_TYPE_COUNTS = 'show_type_counts'
6162
}
6263

6364
export class CollectionsRepository extends ApiRepository implements ICollectionsRepository {
@@ -135,7 +136,8 @@ export class CollectionsRepository extends ApiRepository implements ICollections
135136
[GetCollectionItemsQueryParams.QUERY]: '*',
136137
[GetCollectionItemsQueryParams.SHOW_FACETS]: 'true',
137138
[GetCollectionItemsQueryParams.SORT]: SortType.DATE,
138-
[GetCollectionItemsQueryParams.ORDER]: OrderType.DESC
139+
[GetCollectionItemsQueryParams.ORDER]: OrderType.DESC,
140+
[GetCollectionItemsQueryParams.SHOW_TYPE_COUNTS]: 'true'
139141
})
140142

141143
if (collectionId) {
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export interface CollectionItemsCountPerObjectTypePayload {
2+
Dataverses: number
3+
Datasets: number
4+
Files: number
5+
}

src/collections/infra/repositories/transformers/collectionTransformers.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import { CollectionPreview } from '../../../domain/models/CollectionPreview'
2525
import { CollectionContact } from '../../../domain/models/CollectionContact'
2626
import { CollectionType } from '../../../domain/models/CollectionType'
2727
import { CollectionItemsFacetPayload } from './CollectionItemsFacetsPayload'
28+
import { CollectionItemsCountPerObjectTypePayload } from './CollectionItemsCountPerObjectTypePayload'
2829

2930
export const transformCollectionResponseToCollection = (response: AxiosResponse): Collection => {
3031
const collectionPayload = response.data.data
@@ -84,6 +85,9 @@ export const transformCollectionItemsResponseToCollectionItemSubset = (
8485
const responseDataPayload = response.data.data
8586
const itemsPayload = responseDataPayload.items
8687
const facetsPayload = responseDataPayload.facets as CollectionItemsFacetPayload
88+
const countPerObjectTypePayload = responseDataPayload[
89+
'total_count_per_object_type'
90+
] as CollectionItemsCountPerObjectTypePayload
8791

8892
const items: (DatasetPreview | FilePreview | CollectionPreview)[] = []
8993

@@ -116,10 +120,17 @@ export const transformCollectionItemsResponseToCollectionItemSubset = (
116120
})
117121
)
118122

123+
const countPerObjectType = {
124+
dataverses: countPerObjectTypePayload['Dataverses'],
125+
datasets: countPerObjectTypePayload['Datasets'],
126+
files: countPerObjectTypePayload['Files']
127+
}
128+
119129
return {
120130
items,
121131
facets,
122-
totalItemCount: responseDataPayload.total_count
132+
totalItemCount: responseDataPayload.total_count,
133+
countPerObjectType
123134
}
124135
}
125136

src/datasets/domain/models/Dataset.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,14 @@ export interface TermsOfAccess {
5555
contactForAccess?: string
5656
sizeOfCollection?: string
5757
studyCompletion?: string
58+
termsOfUse?: string
59+
confidentialityDeclaration?: string
60+
specialPermissions?: string
61+
restrictions?: string
62+
citationRequirements?: string
63+
depositorRequirements?: string
64+
conditions?: string
65+
disclaimer?: string
5866
}
5967

6068
export interface TermsOfUse {

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+
confidentialityDeclaration?: 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
}

test/functional/datasets/GetDataset.test.ts

Lines changed: 7 additions & 3 deletions
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: [
@@ -94,13 +98,13 @@ describe('execute', () => {
9498
const versionPayload = createDatasetVersionPayload()
9599
versionPayload.termsOfAccess = 'Hello <b>world</b>'
96100
const dataset = transformVersionPayloadToDataset(versionPayload, false)
97-
expect(dataset.termsOfUse.termsOfAccess.termsOfAccessForRestrictedFiles).toBe('Hello **world**')
101+
expect(dataset.termsOfUse.termsOfAccess).toBe('Hello **world**')
98102
})
99103

100104
test('should return terms of use fields in html format when keepRawFields is true', async () => {
101105
const versionPayload = createDatasetVersionPayload()
102106
const dataset = transformVersionPayloadToDataset(versionPayload, true)
103-
expect(dataset.termsOfUse.termsOfAccess.contactForAccess).toBe(versionPayload.contactForAccess)
107+
expect(dataset.termsOfUse.termsOfAccess).toBe(versionPayload.termsOfAccess)
104108
})
105109

106110
test('should not return metadata fields in markdown format when keepRawFields is true', async () => {

test/functional/metadataBlocks/GetAllFacetableMetadataFields.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ describe('execute', () => {
1818
} catch (error) {
1919
throw new Error('Should not raise an error')
2020
} finally {
21-
expect(metadataFieldInfos?.length).toBe(59)
21+
expect(metadataFieldInfos?.length).toBe(64)
2222
expect(metadataFieldInfos?.[0].name).toBe('authorName')
2323
expect(metadataFieldInfos?.[0].displayName).toBe('Author Name')
2424
}

test/functional/metadataBlocks/GetAllMetadataBlocks.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ describe('execute', () => {
1919
throw new Error('Should not raise an error')
2020
} finally {
2121
expect(metadataBlocks).not.toBeNull()
22-
expect(metadataBlocks?.length).toBe(6)
22+
expect(metadataBlocks?.length).toBe(7)
2323
expect(metadataBlocks?.[0].metadataFields.title.name).toBe('title')
2424
}
2525
})

test/integration/collections/CollectionsRepository.test.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,9 @@ describe('CollectionsRepository', () => {
425425
expect(actualCollectionPreview.type).toBe(CollectionItemType.COLLECTION)
426426

427427
expect(actual.totalItemCount).toBe(3)
428+
expect(actual.countPerObjectType.dataverses).toBe(1)
429+
expect(actual.countPerObjectType.datasets).toBe(1)
430+
expect(actual.countPerObjectType.files).toBe(1)
428431

429432
expect(actual.facets).toEqual(expectedFacetsAll)
430433

@@ -446,6 +449,9 @@ describe('CollectionsRepository', () => {
446449
)
447450
expect(actual.totalItemCount).toBe(1)
448451
expect((actual.items[0] as FilePreview).name).toBe(expectedFileName)
452+
expect(actual.countPerObjectType.dataverses).toBe(0)
453+
expect(actual.countPerObjectType.datasets).toBe(0)
454+
expect(actual.countPerObjectType.files).toBe(1)
449455

450456
const collectionSearchCriteriaForDataset = new CollectionSearchCriteria().withSearchText(
451457
'This is the description'
@@ -458,6 +464,9 @@ describe('CollectionsRepository', () => {
458464
)
459465
expect(actual.totalItemCount).toBe(1)
460466
expect((actual.items[0] as DatasetPreview).title).toBe(expectedDatasetDescription)
467+
expect(actual.countPerObjectType.dataverses).toBe(0)
468+
expect(actual.countPerObjectType.datasets).toBe(1)
469+
expect(actual.countPerObjectType.files).toBe(0)
461470

462471
const collectionSearchCriteriaForDatasetAndCollection =
463472
new CollectionSearchCriteria().withSearchText('the')
@@ -470,6 +479,9 @@ describe('CollectionsRepository', () => {
470479
expect(actual.totalItemCount).toBe(2)
471480
expect((actual.items[0] as DatasetPreview).title).toBe(expectedDatasetDescription)
472481
expect((actual.items[1] as CollectionPreview).name).toBe(expectedCollectionsName)
482+
expect(actual.countPerObjectType.dataverses).toBe(1)
483+
expect(actual.countPerObjectType.datasets).toBe(1)
484+
expect(actual.countPerObjectType.files).toBe(0)
473485

474486
// Test search text, limit and offset
475487
actual = await sut.getCollectionItems(
@@ -481,6 +493,9 @@ describe('CollectionsRepository', () => {
481493
expect(actual.items.length).toBe(1)
482494
expect(actual.totalItemCount).toBe(2)
483495
expect((actual.items[0] as CollectionPreview).name).toBe(expectedCollectionsName)
496+
expect(actual.countPerObjectType.dataverses).toBe(1)
497+
expect(actual.countPerObjectType.datasets).toBe(1)
498+
expect(actual.countPerObjectType.files).toBe(0)
484499

485500
// Test type collection
486501
const collectionSearchCriteriaForCollectionType =
@@ -495,6 +510,9 @@ describe('CollectionsRepository', () => {
495510
expect(actual.totalItemCount).toBe(1)
496511
expect((actual.items[0] as CollectionPreview).name).toBe(expectedCollectionsName)
497512
expect(actual.facets).toEqual(expectedFacetsFromCollectionOnly)
513+
expect(actual.countPerObjectType.dataverses).toBe(1)
514+
expect(actual.countPerObjectType.datasets).toBe(0)
515+
expect(actual.countPerObjectType.files).toBe(0)
498516

499517
// Test type dataset
500518
const collectionSearchCriteriaForDatasetType = new CollectionSearchCriteria().withItemTypes([
@@ -510,6 +528,9 @@ describe('CollectionsRepository', () => {
510528
expect(actual.totalItemCount).toBe(1)
511529
expect((actual.items[0] as DatasetPreview).title).toBe(expectedDatasetDescription)
512530
expect(actual.facets).toEqual(expectedFacetsFromDatasetOnly)
531+
expect(actual.countPerObjectType.dataverses).toBe(0)
532+
expect(actual.countPerObjectType.datasets).toBe(1)
533+
expect(actual.countPerObjectType.files).toBe(0)
513534

514535
// Test type file
515536
const collectionSearchCriteriaForFileType = new CollectionSearchCriteria().withItemTypes([
@@ -525,6 +546,9 @@ describe('CollectionsRepository', () => {
525546
expect(actual.totalItemCount).toBe(1)
526547
expect((actual.items[0] as FilePreview).name).toBe(expectedFileName)
527548
expect(actual.facets).toEqual(expectedFacetsFromFileOnly)
549+
expect(actual.countPerObjectType.dataverses).toBe(0)
550+
expect(actual.countPerObjectType.datasets).toBe(0)
551+
expect(actual.countPerObjectType.files).toBe(1)
528552

529553
// Test multiple types
530554
const collectionSearchCriteriaForMultiTypes = new CollectionSearchCriteria().withItemTypes([
@@ -542,6 +566,9 @@ describe('CollectionsRepository', () => {
542566
expect((actual.items[0] as FilePreview).name).toBe(expectedFileName)
543567
expect((actual.items[1] as CollectionPreview).name).toBe(expectedCollectionsName)
544568
expect(actual.facets).toEqual(expectedFacetsFromCollectionAndFile)
569+
expect(actual.countPerObjectType.dataverses).toBe(1)
570+
expect(actual.countPerObjectType.datasets).toBe(0)
571+
expect(actual.countPerObjectType.files).toBe(1)
545572

546573
// Test Sort by name ascending
547574
const collectionSearchCriteriaNameAscending = new CollectionSearchCriteria()
@@ -559,6 +586,9 @@ describe('CollectionsRepository', () => {
559586
expect((actual.items[0] as DatasetPreview).type).toBe(CollectionItemType.DATASET)
560587
expect((actual.items[1] as CollectionPreview).type).toBe(CollectionItemType.COLLECTION)
561588
expect((actual.items[2] as FilePreview).type).toBe(CollectionItemType.FILE)
589+
expect(actual.countPerObjectType.dataverses).toBe(1)
590+
expect(actual.countPerObjectType.datasets).toBe(1)
591+
expect(actual.countPerObjectType.files).toBe(1)
562592

563593
// Test Sort by name descending
564594
const collectionSearchCriteriaNameDescending = new CollectionSearchCriteria()
@@ -576,6 +606,9 @@ describe('CollectionsRepository', () => {
576606
expect((actual.items[0] as FilePreview).type).toBe(CollectionItemType.FILE)
577607
expect((actual.items[1] as CollectionPreview).type).toBe(CollectionItemType.COLLECTION)
578608
expect((actual.items[2] as DatasetPreview).type).toBe(CollectionItemType.DATASET)
609+
expect(actual.countPerObjectType.dataverses).toBe(1)
610+
expect(actual.countPerObjectType.datasets).toBe(1)
611+
expect(actual.countPerObjectType.files).toBe(1)
579612

580613
// Test Sort by date ascending
581614
const collectionSearchCriteriaDateAscending = new CollectionSearchCriteria()
@@ -593,6 +626,9 @@ describe('CollectionsRepository', () => {
593626
expect((actual.items[0] as CollectionPreview).type).toBe(CollectionItemType.COLLECTION)
594627
expect((actual.items[1] as DatasetPreview).type).toBe(CollectionItemType.DATASET)
595628
expect((actual.items[2] as FilePreview).type).toBe(CollectionItemType.FILE)
629+
expect(actual.countPerObjectType.dataverses).toBe(1)
630+
expect(actual.countPerObjectType.datasets).toBe(1)
631+
expect(actual.countPerObjectType.files).toBe(1)
596632

597633
// Test Sort by date descending
598634
const collectionSearchCriteriaDateDescending = new CollectionSearchCriteria()
@@ -610,6 +646,9 @@ describe('CollectionsRepository', () => {
610646
expect((actual.items[0] as FilePreview).type).toBe(CollectionItemType.FILE)
611647
expect((actual.items[1] as DatasetPreview).type).toBe(CollectionItemType.DATASET)
612648
expect((actual.items[2] as CollectionPreview).type).toBe(CollectionItemType.COLLECTION)
649+
expect(actual.countPerObjectType.dataverses).toBe(1)
650+
expect(actual.countPerObjectType.datasets).toBe(1)
651+
expect(actual.countPerObjectType.files).toBe(1)
613652

614653
// Test with Filter query related to the collection
615654
const collectionSearchCriteriaFilterQueryCollection =
@@ -625,6 +664,9 @@ describe('CollectionsRepository', () => {
625664
expect(actual.totalItemCount).toBe(1)
626665
expect((actual.items[0] as CollectionPreview).name).toBe(expectedCollectionsName)
627666
expect(actual.facets).toEqual(expectedFacetsFromCollectionOnly)
667+
expect(actual.countPerObjectType.dataverses).toBe(1)
668+
expect(actual.countPerObjectType.datasets).toBe(0)
669+
expect(actual.countPerObjectType.files).toBe(0)
628670

629671
// Test with Filter query related to the dataset
630672
const collectionSearchCriteriaFilterQueryDataset =
@@ -642,6 +684,9 @@ describe('CollectionsRepository', () => {
642684
expect(actual.totalItemCount).toBe(1)
643685
expect((actual.items[0] as DatasetPreview).title).toBe(expectedDatasetDescription)
644686
expect(actual.facets).toEqual(expectedFacetsFromDatasetOnly)
687+
expect(actual.countPerObjectType.dataverses).toBe(0)
688+
expect(actual.countPerObjectType.datasets).toBe(1)
689+
expect(actual.countPerObjectType.files).toBe(0)
645690

646691
// Test with Filter query related to the file
647692
const collectionSearchCriteriaFilterQuerieCollAndFile =
@@ -658,6 +703,9 @@ describe('CollectionsRepository', () => {
658703
expect(actual.totalItemCount).toBe(1)
659704
expect((actual.items[0] as FilePreview).name).toBe(expectedFileName)
660705
expect(actual.facets).toEqual(expectedFacetsFromFileOnly)
706+
expect(actual.countPerObjectType.dataverses).toBe(0)
707+
expect(actual.countPerObjectType.datasets).toBe(0)
708+
expect(actual.countPerObjectType.files).toBe(1)
661709
})
662710

663711
test('should return error when collection does not exist', async () => {

0 commit comments

Comments
 (0)