Skip to content

Commit 0a0dd88

Browse files
committed
use CollectionItemSubset.ts as return type
1 parent 35a85f3 commit 0a0dd88

File tree

8 files changed

+82
-76
lines changed

8 files changed

+82
-76
lines changed

docs/useCases.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ The different use cases currently available in the package are classified below,
1414
- [Get Collection Facets](#get-collection-facets)
1515
- [Get User Permissions on a Collection](#get-user-permissions-on-a-collection)
1616
- [List All Collection Items](#list-all-collection-items)
17+
- [List My Data Collection Items](#list-my-data-collection-items)
1718
- [Get Collection Featured Items](#get-collection-featured-items)
1819
- [Collections write use cases](#collections-write-use-cases)
1920
- [Create a Collection](#create-a-collection)
@@ -217,7 +218,7 @@ This use case supports the following optional parameters depending on the search
217218

218219
#### List My Data Collection Items
219220

220-
Returns an instance of [MyDataCollectionItemSubset](../src/collections/domain/models/CollectionItemSubset.ts) that contains reduced information for each collection item for which the calling user has a role.
221+
Returns an instance of [CollectionItemSubset](../src/collections/domain/models/CollectionItemSubset.ts) that contains reduced information for each collection item for which the calling user has a role.
221222

222223
##### Example call:
223224

@@ -248,7 +249,7 @@ getMyDataCollectionItems
248249
searchText,
249250
otherUserName
250251
)
251-
.then((subset: MyDataCollectionItemSubset) => {
252+
.then((subset: CollectionItemSubset) => {
252253
/* ... */
253254
})
254255

@@ -271,8 +272,8 @@ The `MyDataCollectionItemSubset`returned instance contains a property called `to
271272

272273
This use case supports the following optional parameters depending on the search goals:
273274

274-
- **limit**: (number) Limit for pagination.
275-
- **offset**: (number) Offset for pagination.
275+
- **limit**: (number) Limit of items per page for pagination. (default is 10)
276+
- **selectedPage**: (number) the page of results to be returned. (default is 1)
276277

277278
#### Get Collection Featured Items
278279

src/collections/domain/models/CollectionItemSubset.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,6 @@ export interface CollectionItemSubset {
88
totalItemCount: number
99
countPerObjectType: CountPerObjectType
1010
}
11-
export interface MyDataCollectionItemSubset {
12-
items: (CollectionPreview | DatasetPreview | FilePreview)[]
13-
publishingFacet: CollectionItemsFacetLabel[]
14-
totalItemCount: number
15-
countPerObjectType: CountPerObjectType
16-
}
1711

1812
export interface CollectionItemsFacet {
1913
name: string

src/collections/domain/repositories/ICollectionsRepository.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { CollectionFeaturedItemsDTO } from '../dtos/CollectionFeaturedItemsDTO'
33
import { Collection } from '../models/Collection'
44
import { CollectionFacet } from '../models/CollectionFacet'
55
import { CollectionFeaturedItem } from '../models/CollectionFeaturedItem'
6-
import { CollectionItemSubset, MyDataCollectionItemSubset } from '../models/CollectionItemSubset'
6+
import { CollectionItemSubset } from '../models/CollectionItemSubset'
77
import { CollectionSearchCriteria } from '../models/CollectionSearchCriteria'
88
import { CollectionUserPermissions } from '../models/CollectionUserPermissions'
99
import { PublicationStatus } from '../../../../src/core/domain/models/PublicationStatus'
@@ -35,7 +35,7 @@ export interface ICollectionsRepository {
3535
selectedPage?: number,
3636
searchText?: string,
3737
otherUserName?: string
38-
): Promise<MyDataCollectionItemSubset>
38+
): Promise<CollectionItemSubset>
3939
updateCollection(
4040
collectionIdOrAlias: number | string,
4141
updatedCollection: CollectionDTO

src/collections/domain/useCases/GetMyDataCollectionItems.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { UseCase } from '../../../core/domain/useCases/UseCase'
2-
import { MyDataCollectionItemSubset } from '../models/CollectionItemSubset'
2+
import { CollectionItemSubset } from '../models/CollectionItemSubset'
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<MyDataCollectionItemSubset> {
7+
export class GetMyDataCollectionItems implements UseCase<CollectionItemSubset> {
88
private collectionsRepository: ICollectionsRepository
99

1010
constructor(collectionsRepository: ICollectionsRepository) {
@@ -18,7 +18,7 @@ export class GetMyDataCollectionItems implements UseCase<MyDataCollectionItemSub
1818
* @param {CollectionItemType[]} [collectionItemTypes] - the types of items to filter by.
1919
* @param {PublicationStatus[]} [publicationStatuses] - the publication statuses to filter by.
2020
* @param {number} [limit] - Limit number of items to return for pagination (optional).
21-
* @param {number} [offset] - Offset (starting point) for pagination (optional).
21+
* @param {number} [selected] - Offset (starting point) for pagination (optional).
2222
* @param {string} [searchText] - filter by searching for this text in the results (optional).
2323
* * @returns {Promise<MyDataCollectionItemSubset>}
2424
*/
@@ -27,16 +27,16 @@ export class GetMyDataCollectionItems implements UseCase<MyDataCollectionItemSub
2727
collectionItemTypes: CollectionItemType[],
2828
publicationStatuses: PublicationStatus[],
2929
limit?: number,
30-
offset?: number,
30+
selectedPage?: number,
3131
searchText?: string,
3232
otherUserName?: string
33-
): Promise<MyDataCollectionItemSubset> {
33+
): Promise<CollectionItemSubset> {
3434
return await this.collectionsRepository.getMyDataCollectionItems(
3535
roleIds,
3636
collectionItemTypes,
3737
publicationStatuses,
3838
limit,
39-
offset,
39+
selectedPage,
4040
searchText,
4141
otherUserName
4242
)

src/collections/infra/repositories/CollectionsRepository.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,7 @@ import { CollectionDTO } from '../../domain/dtos/CollectionDTO'
1111
import { CollectionFacet } from '../../domain/models/CollectionFacet'
1212
import { CollectionUserPermissions } from '../../domain/models/CollectionUserPermissions'
1313
import { transformCollectionUserPermissionsResponseToCollectionUserPermissions } from './transformers/collectionUserPermissionsTransformers'
14-
import {
15-
CollectionItemSubset,
16-
MyDataCollectionItemSubset
17-
} from '../../domain/models/CollectionItemSubset'
14+
import { CollectionItemSubset } from '../../domain/models/CollectionItemSubset'
1815
import {
1916
CollectionSearchCriteria,
2017
OrderType,
@@ -212,7 +209,7 @@ export class CollectionsRepository extends ApiRepository implements ICollections
212209
selectedPage?: number,
213210
searchText?: string,
214211
userIdentifier?: string
215-
): Promise<MyDataCollectionItemSubset> {
212+
): Promise<CollectionItemSubset> {
216213
const queryParams = new URLSearchParams()
217214

218215
if (limit) {

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

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ import { CollectionFacetPayload } from './CollectionFacetPayload'
1111
import {
1212
CollectionItemsFacet,
1313
CollectionItemsFacetLabel,
14-
CollectionItemSubset,
15-
MyDataCollectionItemSubset
14+
CollectionItemSubset
1615
} from '../../../domain/models/CollectionItemSubset'
1716
import { DatasetPreview } from '../../../../datasets'
1817
import { FilePreview } from '../../../../files'
@@ -150,7 +149,7 @@ export const transformCollectionItemsResponseToCollectionItemSubset = (
150149

151150
export const transformMyDataResponseToCollectionItemSubset = (
152151
response: AxiosResponse
153-
): MyDataCollectionItemSubset => {
152+
): CollectionItemSubset => {
154153
const responseDataPayload = response.data.data
155154
const itemsPayload = responseDataPayload.items
156155
const countPerObjectTypePayload = responseDataPayload[
@@ -189,13 +188,14 @@ export const transformMyDataResponseToCollectionItemSubset = (
189188
datasets: countPerObjectTypePayload['datasets_count'],
190189
files: countPerObjectTypePayload['files_count']
191190
}
192-
const publishingFacet: CollectionItemsFacetLabel[] = transformPublicationStatusResponseToLabels(
191+
const publishingFacet: CollectionItemsFacet = transformPublicationStatusResponseToFacet(
193192
responseDataPayload.pubstatus_counts as MyDataPublicationStatusCountsPayload
194193
)
194+
const facets: CollectionItemsFacet[] = [publishingFacet]
195195

196196
return {
197197
items,
198-
publishingFacet,
198+
facets,
199199
totalItemCount: responseDataPayload.pagination.numResults,
200200
countPerObjectType
201201
}
@@ -210,14 +210,19 @@ const transformContactsPayloadToContacts = (
210210
}))
211211
}
212212

213-
const transformPublicationStatusResponseToLabels = (
213+
const transformPublicationStatusResponseToFacet = (
214214
publicationStatusCounts: MyDataPublicationStatusCountsPayload
215-
): CollectionItemsFacetLabel[] => {
216-
const labels: CollectionItemsFacetLabel[] = []
217-
labels.push({ name: 'Published', count: publicationStatusCounts.published_count })
218-
labels.push({ name: 'Unpublished', count: publicationStatusCounts.unpublished_count })
219-
labels.push({ name: 'Draft', count: publicationStatusCounts.draft_count })
220-
labels.push({ name: 'In Review', count: publicationStatusCounts.in_review_count })
221-
labels.push({ name: 'Deaccessioned', count: publicationStatusCounts.deaccessioned_count })
222-
return labels
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+
}
223228
}

test/functional/collections/GetMyDataCollectionItems.test.ts

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

108108
expect(actual.totalItemCount).toBe(1)
109-
expect(actual.publishingFacet).toEqual([
109+
expect(actual.facets).toEqual([
110110
{
111-
name: 'Published',
112-
count: 0
113-
},
114-
{
115-
name: 'Unpublished',
116-
count: 1
117-
},
118-
{
119-
name: 'Draft',
120-
count: 0
121-
},
122-
{
123-
name: 'In Review',
124-
count: 0
125-
},
126-
{
127-
name: 'Deaccessioned',
128-
count: 0
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+
]
129135
}
130136
])
131137
expect(actual.countPerObjectType).toEqual({

test/unit/collections/GetMyDataCollectionItems.test.ts

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,9 @@ import { CollectionItemType } from '../../../src/collections/domain/models/Colle
55
import { createDatasetPreviewModel } from '../../testHelpers/datasets/datasetPreviewHelper'
66
import { createFilePreviewModel } from '../../testHelpers/files/filePreviewHelper'
77
import { createCollectionPreviewModel } from '../../testHelpers/collections/collectionPreviewHelper'
8-
import {
9-
CollectionItemsFacetLabel,
10-
MyDataCollectionItemSubset
11-
} from '../../../src/collections/domain/models/CollectionItemSubset'
8+
import { CollectionItemsFacet } from '../../../src/collections/domain/models/CollectionItemSubset'
129
import { PublicationStatus } from '../../../src/core/domain/models/PublicationStatus'
13-
10+
import { CollectionItemSubset } from '../../../src/collections/domain/models/CollectionItemSubset'
1411
describe('GetMyDataCollectionItems', () => {
1512
let collectionRepositoryStub: ICollectionsRepository
1613
let testGetMyDataCollectionItems: GetMyDataCollectionItems
@@ -27,27 +24,33 @@ describe('GetMyDataCollectionItems', () => {
2724
const testSearchText = 'test'
2825
const testOtherUserName = 'testUser'
2926
const testItems = [
27+
createCollectionPreviewModel(),
3028
createDatasetPreviewModel(),
31-
createFilePreviewModel(),
32-
createCollectionPreviewModel()
29+
createFilePreviewModel()
3330
]
3431
const testFacets = [
3532
{
36-
name: 'Published',
37-
count: 10
38-
},
39-
{
40-
name: 'Draft',
41-
count: 5
42-
},
43-
{
44-
name: 'Unpublished',
45-
count: 15
33+
name: 'publicationStatus',
34+
friendlyName: 'Publication Status',
35+
labels: [
36+
{
37+
name: 'Published',
38+
count: 10
39+
},
40+
{
41+
name: 'Draft',
42+
count: 5
43+
},
44+
{
45+
name: 'Unpublished',
46+
count: 15
47+
}
48+
]
4649
}
47-
] as CollectionItemsFacetLabel[]
48-
const testItemSubset: MyDataCollectionItemSubset = {
50+
] as CollectionItemsFacet[]
51+
const testItemSubset: CollectionItemSubset = {
4952
items: testItems,
50-
publishingFacet: testFacets,
53+
facets: testFacets,
5154
totalItemCount: 30,
5255
countPerObjectType: { collections: 10, datasets: 15, files: 5 }
5356
}

0 commit comments

Comments
 (0)