Skip to content

Commit 4d53c52

Browse files
committed
change return type of getMyDataCollectionItems use case
1 parent c748a8f commit 4d53c52

File tree

9 files changed

+108
-113
lines changed

9 files changed

+108
-113
lines changed

src/collections/domain/models/CollectionItemSubset.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export interface CollectionItemsFacetLabel {
2020
count: number
2121
}
2222

23-
interface CountPerObjectType {
23+
export interface CountPerObjectType {
2424
collections: number
2525
datasets: number
2626
files: number
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { CollectionPreview } from './CollectionPreview'
2+
import { DatasetPreview } from '../../../datasets'
3+
import { FilePreview } from '../../../files'
4+
import { CountPerObjectType } from './CollectionItemSubset'
5+
import { PublicationStatus } from '../../../../src/core/domain/models/PublicationStatus'
6+
7+
export interface MyDataCollectionItemSubset {
8+
items: (CollectionPreview | DatasetPreview | FilePreview)[]
9+
publicationStatusCounts: PublicationStatusCount[]
10+
totalItemCount: number
11+
countPerObjectType: CountPerObjectType
12+
}
13+
14+
export interface PublicationStatusCount {
15+
publicationStatus: PublicationStatus
16+
count: number
17+
}

src/collections/domain/repositories/ICollectionsRepository.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Collection } from '../models/Collection'
44
import { CollectionFacet } from '../models/CollectionFacet'
55
import { CollectionFeaturedItem } from '../models/CollectionFeaturedItem'
66
import { CollectionItemSubset } from '../models/CollectionItemSubset'
7+
import { MyDataCollectionItemSubset } from '../models/MyDataCollectionItemSubset'
78
import { CollectionSearchCriteria } from '../models/CollectionSearchCriteria'
89
import { CollectionUserPermissions } from '../models/CollectionUserPermissions'
910
import { PublicationStatus } from '../../../../src/core/domain/models/PublicationStatus'
@@ -35,7 +36,7 @@ export interface ICollectionsRepository {
3536
selectedPage?: number,
3637
searchText?: string,
3738
otherUserName?: string
38-
): Promise<CollectionItemSubset>
39+
): Promise<MyDataCollectionItemSubset>
3940
updateCollection(
4041
collectionIdOrAlias: number | string,
4142
updatedCollection: CollectionDTO

src/collections/domain/useCases/GetMyDataCollectionItems.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { UseCase } from '../../../core/domain/useCases/UseCase'
2-
import { CollectionItemSubset } from '../models/CollectionItemSubset'
2+
import { MyDataCollectionItemSubset } from '../models/MyDataCollectionItemSubset'
33
import { ICollectionsRepository } from '../repositories/ICollectionsRepository'
44
import { CollectionItemType } from '../../../../src/collections/domain/models/CollectionItemType'
55
import { PublicationStatus } from '../../../../src/core/domain/models/PublicationStatus'
66

7-
export class GetMyDataCollectionItems implements UseCase<CollectionItemSubset> {
7+
export class GetMyDataCollectionItems implements UseCase<MyDataCollectionItemSubset> {
88
private collectionsRepository: ICollectionsRepository
99

1010
constructor(collectionsRepository: ICollectionsRepository) {
@@ -31,7 +31,7 @@ export class GetMyDataCollectionItems implements UseCase<CollectionItemSubset> {
3131
selectedPage?: number,
3232
searchText?: string,
3333
otherUserName?: string
34-
): Promise<CollectionItemSubset> {
34+
): Promise<MyDataCollectionItemSubset> {
3535
return this.collectionsRepository.getMyDataCollectionItems(
3636
roleIds,
3737
collectionItemTypes,

src/collections/infra/repositories/CollectionsRepository.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { CollectionFacet } from '../../domain/models/CollectionFacet'
1212
import { CollectionUserPermissions } from '../../domain/models/CollectionUserPermissions'
1313
import { transformCollectionUserPermissionsResponseToCollectionUserPermissions } from './transformers/collectionUserPermissionsTransformers'
1414
import { CollectionItemSubset } from '../../domain/models/CollectionItemSubset'
15+
import { MyDataCollectionItemSubset } from '../../domain/models/MyDataCollectionItemSubset'
1516
import {
1617
CollectionSearchCriteria,
1718
OrderType,
@@ -209,7 +210,7 @@ export class CollectionsRepository extends ApiRepository implements ICollections
209210
selectedPage?: number,
210211
searchText?: string,
211212
userIdentifier?: string
212-
): Promise<CollectionItemSubset> {
213+
): Promise<MyDataCollectionItemSubset> {
213214
const queryParams = new URLSearchParams()
214215

215216
if (limit) {

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

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import { CollectionFacet } from '../../../domain/models/CollectionFacet'
1010
import { CollectionFacetPayload } from './CollectionFacetPayload'
1111
import {
1212
CollectionItemsFacet,
13-
CollectionItemsFacetLabel,
1413
CollectionItemSubset
1514
} from '../../../domain/models/CollectionItemSubset'
1615
import { DatasetPreview } from '../../../../datasets'
@@ -39,7 +38,11 @@ import { MyDataFilePreviewPayload } from '../../../../files/infra/repositories/t
3938
import { MyDataDatasetPreviewPayload } from '../../../../datasets/infra/repositories/transformers/MyDataDatasetPreviewPayload'
4039
import { MyDataCollectionPreviewPayload } from './MyDataCollectionPreviewPayload'
4140
import { MyDataCountPerObjectTypePayload } from './MyDataCountPerObjectTypePayload'
42-
import { MyDataPublicationStatusCountsPayload } from './MyDataPublicationStatusCountsPayload'
41+
import {
42+
MyDataCollectionItemSubset,
43+
PublicationStatusCount
44+
} from '../../../domain/models/MyDataCollectionItemSubset'
45+
import { PublicationStatus } from '../../../../../src/core/domain/models/PublicationStatus'
4346

4447
export const transformCollectionResponseToCollection = (response: AxiosResponse): Collection => {
4548
const collectionPayload = response.data.data
@@ -149,7 +152,7 @@ export const transformCollectionItemsResponseToCollectionItemSubset = (
149152

150153
export const transformMyDataResponseToCollectionItemSubset = (
151154
response: AxiosResponse
152-
): CollectionItemSubset => {
155+
): MyDataCollectionItemSubset => {
153156
const responseDataPayload = response.data.data
154157
const itemsPayload = responseDataPayload.items
155158
const countPerObjectTypePayload = responseDataPayload[
@@ -188,14 +191,32 @@ export const transformMyDataResponseToCollectionItemSubset = (
188191
datasets: countPerObjectTypePayload['datasets_count'],
189192
files: countPerObjectTypePayload['files_count']
190193
}
191-
const publishingFacet: CollectionItemsFacet = transformPublicationStatusResponseToFacet(
192-
responseDataPayload.pubstatus_counts as MyDataPublicationStatusCountsPayload
193-
)
194-
const facets: CollectionItemsFacet[] = [publishingFacet]
195194

195+
const publicationStatusCounts: PublicationStatusCount[] = [
196+
{
197+
publicationStatus: PublicationStatus.Published,
198+
count: responseDataPayload.pubstatus_counts.published_count
199+
},
200+
{
201+
publicationStatus: PublicationStatus.Unpublished,
202+
count: responseDataPayload.pubstatus_counts.unpublished_count
203+
},
204+
{
205+
publicationStatus: PublicationStatus.Draft,
206+
count: responseDataPayload.pubstatus_counts.draft_count
207+
},
208+
{
209+
publicationStatus: PublicationStatus.InReview,
210+
count: responseDataPayload.pubstatus_counts.in_review_count
211+
},
212+
{
213+
publicationStatus: PublicationStatus.Deaccessioned,
214+
count: responseDataPayload.pubstatus_counts.deaccessioned_count
215+
}
216+
]
196217
return {
197218
items,
198-
facets,
219+
publicationStatusCounts,
199220
totalItemCount: responseDataPayload.pagination.numResults,
200221
countPerObjectType
201222
}
@@ -209,20 +230,3 @@ const transformContactsPayloadToContacts = (
209230
displayOrder: contactPayload.displayOrder
210231
}))
211232
}
212-
213-
const transformPublicationStatusResponseToFacet = (
214-
publicationStatusCounts: MyDataPublicationStatusCountsPayload
215-
): CollectionItemsFacet => {
216-
const labels: CollectionItemsFacetLabel[] = [
217-
{ name: 'Published', count: publicationStatusCounts.published_count },
218-
{ name: 'Unpublished', count: publicationStatusCounts.unpublished_count },
219-
{ name: 'Draft', count: publicationStatusCounts.draft_count },
220-
{ name: 'In Review', count: publicationStatusCounts.in_review_count },
221-
{ name: 'Deaccessioned', count: publicationStatusCounts.deaccessioned_count }
222-
]
223-
return {
224-
name: 'publicationStatus',
225-
friendlyName: 'Publication Status',
226-
labels
227-
}
228-
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
export enum PublicationStatus {
2+
Deaccessioned = 'Deaccessioned',
3+
InReview = 'InReview',
24
Published = 'Published',
35
Unpublished = 'Unpublished',
4-
Draft = 'Draft',
5-
Deaccessioned = 'Deaccessioned',
6-
InReview = 'In Review'
6+
Draft = 'Draft'
77
}

test/functional/collections/GetMyDataCollectionItems.test.ts

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -106,32 +106,26 @@ describe('execute', () => {
106106
expect(actualCollectionPreview.alias).toBe(testCollectionAlias)
107107

108108
expect(actual.totalItemCount).toBe(1)
109-
expect(actual.facets).toEqual([
109+
expect(actual.publicationStatusCounts).toEqual([
110110
{
111-
name: 'publicationStatus',
112-
friendlyName: 'Publication Status',
113-
labels: [
114-
{
115-
name: 'Published',
116-
count: 0
117-
},
118-
{
119-
name: 'Unpublished',
120-
count: 1
121-
},
122-
{
123-
name: 'Draft',
124-
count: 0
125-
},
126-
{
127-
name: 'In Review',
128-
count: 0
129-
},
130-
{
131-
name: 'Deaccessioned',
132-
count: 0
133-
}
134-
]
111+
publicationStatus: 'Published',
112+
count: 0
113+
},
114+
{
115+
publicationStatus: 'Unpublished',
116+
count: 1
117+
},
118+
{
119+
publicationStatus: 'Draft',
120+
count: 0
121+
},
122+
{
123+
publicationStatus: 'In Review',
124+
count: 0
125+
},
126+
{
127+
publicationStatus: 'Deaccessioned',
128+
count: 0
135129
}
136130
])
137131
expect(actual.countPerObjectType).toEqual({

test/integration/collections/CollectionsRepository.test.ts

Lines changed: 32 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -487,8 +487,9 @@ describe('CollectionsRepository', () => {
487487
expect(actualFilePreview.fileType).toBe('Plain Text')
488488
expect(actualFilePreview.md5).toBe(expectedFileMd5)
489489
expect(actualFilePreview.name).toBe(expectedFileName)
490-
expect(actualFilePreview.publicationStatuses[0]).toBe(PublicationStatus.Unpublished)
491-
expect(actualFilePreview.publicationStatuses[1]).toBe(PublicationStatus.Draft)
490+
expect(actualFilePreview.publicationStatuses.length).toBe(2)
491+
expect(actualFilePreview.publicationStatuses).toContain(PublicationStatus.Unpublished)
492+
expect(actualFilePreview.publicationStatuses).toContain(PublicationStatus.Draft)
492493
expect(actualFilePreview.sizeInBytes).toBe(12)
493494
expect(actualFilePreview.url).not.toBeUndefined()
494495
expect(actualFilePreview.releaseOrCreateDate).not.toBeUndefined()
@@ -1420,19 +1421,14 @@ describe('CollectionsRepository', () => {
14201421
const expectedFileName = 'test-file-2.txt'
14211422
const expectedCollectionsName = 'Test Collection'
14221423

1423-
const expectedFacetsAll = [
1424-
{
1425-
name: 'publicationStatus',
1426-
friendlyName: 'Publication Status',
1427-
labels: [
1428-
{ name: 'Published', count: 0 },
1429-
{ name: 'Unpublished', count: 3 },
1430-
{ name: 'Draft', count: 2 },
1431-
{ name: 'In Review', count: 0 },
1432-
{ name: 'Deaccessioned', count: 0 }
1433-
]
1434-
}
1424+
const expectedPublicationStatusCounts = [
1425+
{ publicationStatus: 'Published', count: 0 },
1426+
{ publicationStatus: 'Unpublished', count: 3 },
1427+
{ publicationStatus: 'Draft', count: 2 },
1428+
{ publicationStatus: 'InReview', count: 0 },
1429+
{ publicationStatus: 'Deaccessioned', count: 0 }
14351430
]
1431+
14361432
expect(actual.items.length).toBe(3)
14371433
expect(actual.totalItemCount).toBe(3)
14381434
expect(actual.countPerObjectType.collections).toBe(1)
@@ -1450,9 +1446,9 @@ describe('CollectionsRepository', () => {
14501446
expect(actualFilePreview.fileId).not.toBeUndefined()
14511447
expect(actualFilePreview.fileType).toBe('Plain Text')
14521448
expect(actualFilePreview.md5).toBe(expectedFileMd5)
1453-
expect(actualFilePreview.name).toBe(expectedFileName)
1454-
expect(actualFilePreview.publicationStatuses[0]).toBe(PublicationStatus.Unpublished)
1455-
expect(actualFilePreview.publicationStatuses[1]).toBe(PublicationStatus.Draft)
1449+
expect(actualFilePreview.publicationStatuses.length).toBe(2)
1450+
expect(actualFilePreview.publicationStatuses).toContain(PublicationStatus.Unpublished)
1451+
expect(actualFilePreview.publicationStatuses).toContain(PublicationStatus.Draft)
14561452
expect(actualFilePreview.sizeInBytes).toBe(12)
14571453
expect(actualFilePreview.url).not.toBeUndefined()
14581454
expect(actualFilePreview.releaseOrCreateDate).not.toBeUndefined()
@@ -1490,7 +1486,7 @@ describe('CollectionsRepository', () => {
14901486
expect(actualCollectionPreview.affiliation).toBe('test affiliation')
14911487
expect(actualCollectionPreview.type).toBe(CollectionItemType.COLLECTION)
14921488

1493-
expect(actual.facets).toEqual(expectedFacetsAll)
1489+
expect(actual.publicationStatusCounts).toEqual(expectedPublicationStatusCounts)
14941490

14951491
// Test limit and selectedPage
14961492
actual = await sut.getMyDataCollectionItems(
@@ -1568,18 +1564,12 @@ describe('CollectionsRepository', () => {
15681564
expect(actual.items.length).toBe(1)
15691565
expect(actual.totalItemCount).toBe(1)
15701566
expect((actual.items[0] as CollectionPreview).name).toBe(expectedCollectionsName)
1571-
expect(actual.facets).toEqual([
1572-
{
1573-
name: 'publicationStatus',
1574-
friendlyName: 'Publication Status',
1575-
labels: [
1576-
{ name: 'Published', count: 0 },
1577-
{ name: 'Unpublished', count: 1 },
1578-
{ name: 'Draft', count: 0 },
1579-
{ name: 'In Review', count: 0 },
1580-
{ name: 'Deaccessioned', count: 0 }
1581-
]
1582-
}
1567+
expect(actual.publicationStatusCounts).toEqual([
1568+
{ publicationStatus: 'Published', count: 0 },
1569+
{ publicationStatus: 'Unpublished', count: 1 },
1570+
{ publicationStatus: 'Draft', count: 0 },
1571+
{ publicationStatus: 'InReview', count: 0 },
1572+
{ publicationStatus: 'Deaccessioned', count: 0 }
15831573
])
15841574
expect(actual.countPerObjectType.collections).toBe(1)
15851575
expect(actual.countPerObjectType.datasets).toBe(0)
@@ -1597,18 +1587,12 @@ describe('CollectionsRepository', () => {
15971587
expect(actual.items.length).toBe(1)
15981588
expect(actual.totalItemCount).toBe(1)
15991589
expect((actual.items[0] as DatasetPreview).title).toBe(expectedDatasetDescription)
1600-
expect(actual.facets).toEqual([
1601-
{
1602-
name: 'publicationStatus',
1603-
friendlyName: 'Publication Status',
1604-
labels: [
1605-
{ name: 'Published', count: 0 },
1606-
{ name: 'Unpublished', count: 1 },
1607-
{ name: 'Draft', count: 1 },
1608-
{ name: 'In Review', count: 0 },
1609-
{ name: 'Deaccessioned', count: 0 }
1610-
]
1611-
}
1590+
expect(actual.publicationStatusCounts).toEqual([
1591+
{ publicationStatus: 'Published', count: 0 },
1592+
{ publicationStatus: 'Unpublished', count: 1 },
1593+
{ publicationStatus: 'Draft', count: 1 },
1594+
{ publicationStatus: 'InReview', count: 0 },
1595+
{ publicationStatus: 'Deaccessioned', count: 0 }
16121596
])
16131597
expect(actual.countPerObjectType.collections).toBe(0)
16141598
expect(actual.countPerObjectType.datasets).toBe(1)
@@ -1627,18 +1611,12 @@ describe('CollectionsRepository', () => {
16271611
expect(actual.items.length).toBe(1)
16281612
expect(actual.totalItemCount).toBe(1)
16291613
expect((actual.items[0] as FilePreview).name).toBe(expectedFileName)
1630-
expect(actual.facets).toEqual([
1631-
{
1632-
name: 'publicationStatus',
1633-
friendlyName: 'Publication Status',
1634-
labels: [
1635-
{ name: 'Published', count: 0 },
1636-
{ name: 'Unpublished', count: 1 },
1637-
{ name: 'Draft', count: 1 },
1638-
{ name: 'In Review', count: 0 },
1639-
{ name: 'Deaccessioned', count: 0 }
1640-
]
1641-
}
1614+
expect(actual.publicationStatusCounts).toEqual([
1615+
{ publicationStatus: 'Published', count: 0 },
1616+
{ publicationStatus: 'Unpublished', count: 1 },
1617+
{ publicationStatus: 'Draft', count: 1 },
1618+
{ publicationStatus: 'InReview', count: 0 },
1619+
{ publicationStatus: 'Deaccessioned', count: 0 }
16421620
])
16431621

16441622
expect(actual.countPerObjectType.collections).toBe(0)

0 commit comments

Comments
 (0)