Skip to content

Commit ba8fddd

Browse files
committed
Added: tweaks to createCollection parameters and missing IT tests
1 parent bd797ad commit ba8fddd

File tree

5 files changed

+31
-8
lines changed

5 files changed

+31
-8
lines changed

src/collections/domain/repositories/ICollectionsRepository.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ import { Collection } from '../models/Collection'
33

44
export interface ICollectionsRepository {
55
getCollection(collectionIdOrAlias: number | string): Promise<Collection>
6-
createCollection(collectionDTO: CollectionDTO, parentCollectionId: string): Promise<number>
6+
createCollection(collectionDTO: CollectionDTO, parentCollectionId: number | string): Promise<number>
77
}

src/collections/domain/useCases/CreateCollection.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { UseCase } from '../../../core/domain/useCases/UseCase'
22
import { CollectionDTO } from '../dtos/CollectionDTO'
3+
import { ROOT_COLLECTION_ALIAS } from '../models/Collection'
34
import { ICollectionsRepository } from '../repositories/ICollectionsRepository'
45

56
export class CreateCollection implements UseCase<number> {
@@ -12,7 +13,7 @@ export class CreateCollection implements UseCase<number> {
1213
/**
1314
* TODO
1415
*/
15-
async execute(newCollection: CollectionDTO, parentCollectionId = 'root'): Promise<number> {
16+
async execute(newCollection: CollectionDTO, parentCollectionId: number | string = ROOT_COLLECTION_ALIAS): Promise<number> {
1617
return await this.collectionsRepository.createCollection(newCollection, parentCollectionId)
1718
}
1819
}

src/collections/infra/repositories/CollectionsRepository.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export class CollectionsRepository extends ApiRepository implements ICollections
2121

2222
public async createCollection(
2323
collectionDTO: CollectionDTO,
24-
parentCollectionId = 'root'
24+
parentCollectionId: number | string = ROOT_COLLECTION_ALIAS
2525
): Promise<number> {
2626
const dataverseContacts = collectionDTO.contacts.map((contact) => ({
2727
contactEmail: contact

test/integration/collections/CollectionsRepository.test.ts

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { CollectionsRepository } from '../../../src/collections/infra/repositories/CollectionsRepository'
22
import { TestConstants } from '../../testHelpers/TestConstants'
3-
import { ReadError } from '../../../src'
3+
import { ReadError, WriteError } from '../../../src'
44
import { ApiConfig } from '../../../src'
55
import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig'
66
import {
@@ -88,10 +88,32 @@ describe('CollectionsRepository', () => {
8888
})
8989

9090
describe('createCollection', () => {
91+
const testCreateCollectionAlias1 = 'createCollection-test-1'
92+
const testCreateCollectionAlias2 = 'createCollection-test-2'
93+
94+
afterAll(async () => {
95+
await deleteCollectionViaApi(testCreateCollectionAlias1)
96+
await deleteCollectionViaApi(testCreateCollectionAlias2)
97+
})
98+
9199
test('should create collection in root when no parent collection is set', async () => {
92-
const newCollectionDTO = createCollectionDTO()
93-
const actual = await sut.createCollection(newCollectionDTO)
100+
const actual = await sut.createCollection(createCollectionDTO(testCreateCollectionAlias1))
101+
expect(typeof actual).toBe('number')
102+
})
103+
104+
test('should create collection in parent collection when parent collection is set', async () => {
105+
const actual = await sut.createCollection(createCollectionDTO(testCreateCollectionAlias2), testCollectionId)
94106
expect(typeof actual).toBe('number')
95107
})
108+
109+
test('should return error when parent collection does not exist', async () => {
110+
const expectedError = new WriteError(
111+
`[404] Can't find dataverse with identifier='${TestConstants.TEST_DUMMY_COLLECTION_ID}'`
112+
)
113+
const testCreateCollectionAlias3 = 'createCollection-test-3'
114+
await expect(sut.createCollection(createCollectionDTO(testCreateCollectionAlias3), TestConstants.TEST_DUMMY_COLLECTION_ID)).rejects.toThrow(
115+
expectedError
116+
)
117+
})
96118
})
97119
})

test/testHelpers/collections/collectionHelper.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,9 @@ export async function setStorageDriverViaApi(
102102
}
103103
}
104104

105-
export const createCollectionDTO = (): CollectionDTO => {
105+
export const createCollectionDTO = (alias: string = 'test-collection'): CollectionDTO => {
106106
return {
107-
alias: 'test-collection',
107+
alias: alias,
108108
name: 'Test Collection',
109109
contacts: ['[email protected]'],
110110
type: CollectionType.DEPARTMENT

0 commit comments

Comments
 (0)