Skip to content

Commit 1b2a5d4

Browse files
committed
Added: createCollection functional tests
1 parent ca7b156 commit 1b2a5d4

File tree

3 files changed

+51
-2
lines changed

3 files changed

+51
-2
lines changed

src/collections/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1+
import { CreateCollection } from './domain/useCases/CreateCollection'
12
import { GetCollection } from './domain/useCases/GetCollection'
23

34
import { CollectionsRepository } from './infra/repositories/CollectionsRepository'
45

56
const collectionsRepository = new CollectionsRepository()
67

78
const getCollection = new GetCollection(collectionsRepository)
9+
const createCollection = new CreateCollection(collectionsRepository)
810

9-
export { getCollection }
11+
export { getCollection, createCollection }
1012
export { Collection } from './domain/models/Collection'

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ const transformPayloadToCollection = (collectionPayload: CollectionPayload): Col
1616
name: collectionPayload.name,
1717
isReleased: collectionPayload.isReleased,
1818
affiliation: collectionPayload.affiliation,
19-
description: transformHtmlToMarkdown(collectionPayload.description),
19+
...(collectionPayload.description && {
20+
description: transformHtmlToMarkdown(collectionPayload.description)
21+
}),
2022
...(collectionPayload.isPartOf && {
2123
isPartOf: transformPayloadToOwnerNode(collectionPayload.isPartOf)
2224
})
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { ApiConfig, WriteError, createCollection, getCollection } from '../../../src'
2+
import { TestConstants } from '../../testHelpers/TestConstants'
3+
import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig'
4+
import { createCollectionDTO } from '../../testHelpers/collections/collectionHelper'
5+
6+
describe('execute', () => {
7+
beforeEach(async () => {
8+
ApiConfig.init(
9+
TestConstants.TEST_API_URL,
10+
DataverseApiAuthMechanism.API_KEY,
11+
process.env.TEST_API_KEY
12+
)
13+
})
14+
15+
test('should successfully create a new collection', async () => {
16+
const testNewCollection = createCollectionDTO()
17+
expect.assertions(1)
18+
let createdCollectionId = 0
19+
try {
20+
createdCollectionId = await createCollection.execute(testNewCollection)
21+
} catch (error) {
22+
throw new Error('Collection should be created')
23+
} finally {
24+
const createdCollection = await getCollection.execute(createdCollectionId)
25+
expect(createdCollection.alias).toBe(testNewCollection.alias)
26+
}
27+
})
28+
29+
test('should throw an error when the parent collection does not exist', async () => {
30+
const testNewCollection = createCollectionDTO()
31+
expect.assertions(2)
32+
let writeError: WriteError
33+
try {
34+
await createCollection.execute(testNewCollection, TestConstants.TEST_DUMMY_COLLECTION_ID)
35+
throw new Error('Use case should throw an error')
36+
} catch (error) {
37+
writeError = error
38+
} finally {
39+
expect(writeError).toBeInstanceOf(WriteError)
40+
expect(writeError.message).toEqual(
41+
`There was an error when writing the resource. Reason was: [404] Can't find dataverse with identifier='${TestConstants.TEST_DUMMY_COLLECTION_ID}'`
42+
)
43+
}
44+
})
45+
})

0 commit comments

Comments
 (0)