Skip to content

Commit 637977c

Browse files
committed
tests for delete collection featured items
1 parent 3400f27 commit 637977c

File tree

4 files changed

+167
-45
lines changed

4 files changed

+167
-45
lines changed
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import { ApiConfig, deleteCollectionFeaturedItems, WriteError } from '../../../src'
2+
import { TestConstants } from '../../testHelpers/TestConstants'
3+
import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig'
4+
import {
5+
createCollectionViaApi,
6+
deleteCollectionViaApi
7+
} from '../../testHelpers/collections/collectionHelper'
8+
import {
9+
createCollectionFeaturedItemViaApi,
10+
deleteCollectionFeaturedItemsViaApi
11+
} from '../../testHelpers/collections/collectionFeaturedItemsHelper'
12+
13+
describe('execute', () => {
14+
const testCollectionAlias = 'deleteCollectionFeaturedItemsTest'
15+
16+
beforeEach(async () => {
17+
ApiConfig.init(
18+
TestConstants.TEST_API_URL,
19+
DataverseApiAuthMechanism.API_KEY,
20+
process.env.TEST_API_KEY
21+
)
22+
})
23+
24+
beforeAll(async () => {
25+
try {
26+
await createCollectionViaApi(testCollectionAlias)
27+
await createCollectionFeaturedItemViaApi(testCollectionAlias, {
28+
content: '<p class="rte-paragraph">Test content</p>',
29+
displayOrder: 1,
30+
withFile: true,
31+
fileName: 'featured-item-test-image.png'
32+
})
33+
await createCollectionFeaturedItemViaApi(testCollectionAlias, {
34+
content: '<p class="rte-paragraph">Test content 2</p>',
35+
displayOrder: 2,
36+
withFile: false
37+
})
38+
await createCollectionFeaturedItemViaApi(testCollectionAlias, {
39+
content: '<p class="rte-paragraph">Test content 3</p>',
40+
displayOrder: 3,
41+
withFile: false
42+
})
43+
} catch (error) {
44+
throw new Error(
45+
`Tests beforeAll(): Error while creating test collection: ${testCollectionAlias}`
46+
)
47+
}
48+
})
49+
50+
afterAll(async () => {
51+
try {
52+
await deleteCollectionFeaturedItemsViaApi(testCollectionAlias)
53+
await deleteCollectionViaApi(testCollectionAlias)
54+
} catch (error) {
55+
throw new Error(
56+
`Tests afterAll(): Error while deleting test collection: ${testCollectionAlias}`
57+
)
58+
}
59+
})
60+
61+
test('should succesfully delete all featured items from a collection', async () => {
62+
const actual = await deleteCollectionFeaturedItems.execute(testCollectionAlias)
63+
64+
expect(actual).toBeUndefined()
65+
})
66+
67+
test('should throw an error when collection does not exist', async () => {
68+
const invalidCollectionAlias = 'invalid-collection-alias'
69+
let writeError: WriteError | undefined
70+
71+
try {
72+
await deleteCollectionFeaturedItems.execute(invalidCollectionAlias)
73+
} catch (error) {
74+
writeError = error
75+
} finally {
76+
expect(writeError).toBeInstanceOf(WriteError)
77+
expect((writeError as WriteError).message).toEqual(
78+
`There was an error when writing the resource. Reason was: [404] Can't find dataverse with identifier='${invalidCollectionAlias}'`
79+
)
80+
}
81+
})
82+
})

test/integration/collections/CollectionsRepository.test.ts

Lines changed: 54 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import { ROOT_COLLECTION_ID } from '../../../src/collections/domain/models/Colle
3737
import {
3838
createCollectionFeaturedItemViaApi,
3939
createImageFile,
40-
deleteAllCollectionFeaturedItemsViaApi,
40+
deleteCollectionFeaturedItemsViaApi,
4141
deleteCollectionFeaturedItemViaApi
4242
} from '../../testHelpers/collections/collectionFeaturedItemsHelper'
4343

@@ -946,7 +946,7 @@ describe('CollectionsRepository', () => {
946946
describe('updateCollectionFeaturedItems', () => {
947947
afterAll(async () => {
948948
try {
949-
await deleteAllCollectionFeaturedItemsViaApi(testCollectionAlias)
949+
await deleteCollectionFeaturedItemsViaApi(testCollectionAlias)
950950
} catch (error) {
951951
throw new Error(
952952
`Tests afterAll(): Error while deleting all featured items from collection: ${testCollectionAlias}`
@@ -1002,46 +1002,56 @@ describe('CollectionsRepository', () => {
10021002
})
10031003
})
10041004

1005-
// describe('deleteAllCollectionFeaturedItems', () => {
1006-
1007-
// beforeAll(async () => {
1008-
// try {
1009-
// await createCollectionFeaturedItemViaApi(testCollectionAlias, {
1010-
// content: '<p class="rte-paragraph">Test content</p>',
1011-
// displayOrder: 1,
1012-
// withFile: true,
1013-
// fileName: 'featured-item-test-image.png'
1014-
// })
1015-
// await createCollectionFeaturedItemViaApi(testCollectionAlias, {
1016-
// content: '<p class="rte-paragraph">Test content 2</p>',
1017-
// displayOrder: 2,
1018-
// withFile: false
1019-
// })
1020-
// await createCollectionFeaturedItemViaApi(testCollectionAlias, {
1021-
// content: '<p class="rte-paragraph">Test content 3</p>',
1022-
// displayOrder: 3,
1023-
// withFile: false
1024-
// })
1025-
1026-
// } catch (error) {
1027-
// throw new Error(
1028-
// `Tests afterAll(): Error while deleting all featured items from collection: ${testCollectionAlias}`
1029-
// )
1030-
// }
1031-
// })
1032-
1033-
// it('should delete all collection featured items', async () => {
1034-
// const featuredItemsResponseFirst = await sut.getCollectionFeaturedItems(testCollectionAlias)
1035-
1036-
// console.log({ featuredItemsResponseFirst })
1037-
1038-
// await deleteAllCollectionFeaturedItemsViaApi(testCollectionAlias)
1039-
1040-
// const featuredItemsResponse = await sut.getCollectionFeaturedItems(testCollectionAlias)
1041-
1042-
// console.log({ featuredItemsResponse })
1043-
1044-
// expect(featuredItemsResponse).toStrictEqual([])
1045-
// })
1046-
// })
1005+
describe('deleteCollectionFeaturedItems', () => {
1006+
beforeAll(async () => {
1007+
try {
1008+
await createCollectionFeaturedItemViaApi(testCollectionAlias, {
1009+
content: '<p class="rte-paragraph">Test content</p>',
1010+
displayOrder: 1,
1011+
withFile: true,
1012+
fileName: 'featured-item-test-image.png'
1013+
})
1014+
await createCollectionFeaturedItemViaApi(testCollectionAlias, {
1015+
content: '<p class="rte-paragraph">Test content 2</p>',
1016+
displayOrder: 2,
1017+
withFile: false
1018+
})
1019+
await createCollectionFeaturedItemViaApi(testCollectionAlias, {
1020+
content: '<p class="rte-paragraph">Test content 3</p>',
1021+
displayOrder: 3,
1022+
withFile: false
1023+
})
1024+
} catch (error) {
1025+
throw new Error(
1026+
`Tests afterAll(): Error while creating test featured items for collection: ${testCollectionAlias}`
1027+
)
1028+
}
1029+
})
1030+
1031+
afterAll(async () => {
1032+
try {
1033+
await deleteCollectionFeaturedItemsViaApi(testCollectionAlias)
1034+
} catch (error) {
1035+
throw new Error(
1036+
`Tests afterAll(): Error while deleting test collection featured items: ${testCollectionAlias}`
1037+
)
1038+
}
1039+
})
1040+
1041+
it('should delete all collection featured items', async () => {
1042+
const featuredItemsResponseBeforeDeletion = await sut.getCollectionFeaturedItems(
1043+
testCollectionAlias
1044+
)
1045+
1046+
expect(featuredItemsResponseBeforeDeletion).toHaveLength(3)
1047+
1048+
await sut.deleteCollectionFeaturedItems(testCollectionAlias)
1049+
1050+
const featuredItemsResponseAfterDeletion = await sut.getCollectionFeaturedItems(
1051+
testCollectionAlias
1052+
)
1053+
1054+
expect(featuredItemsResponseAfterDeletion).toStrictEqual([])
1055+
})
1056+
})
10471057
})

test/testHelpers/collections/collectionFeaturedItemsHelper.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export async function deleteCollectionFeaturedItemViaApi(featuredItemId: number)
6969
}
7070
}
7171

72-
export async function deleteAllCollectionFeaturedItemsViaApi(collectionAlias: string) {
72+
export async function deleteCollectionFeaturedItemsViaApi(collectionAlias: string) {
7373
try {
7474
return await axios.delete(
7575
`${TestConstants.TEST_API_URL}/dataverses/${collectionAlias}/featuredItems`,
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { ICollectionsRepository } from '../../../src/collections/domain/repositories/ICollectionsRepository'
2+
import { WriteError } from '../../../src'
3+
import { DeleteCollectionFeaturedItems } from '../../../src/collections/domain/useCases/DeleteCollectionFeaturedItems'
4+
5+
describe('execute', () => {
6+
test('should return undefined on repository success', async () => {
7+
const collectionRepositoryStub: ICollectionsRepository = {} as ICollectionsRepository
8+
collectionRepositoryStub.deleteCollectionFeaturedItems = jest.fn().mockResolvedValue(undefined)
9+
10+
const testDeleteCollectionFeaturedItems = new DeleteCollectionFeaturedItems(
11+
collectionRepositoryStub
12+
)
13+
14+
const actual = await testDeleteCollectionFeaturedItems.execute(1)
15+
16+
expect(actual).toEqual(undefined)
17+
})
18+
19+
test('should return error result on repository error', async () => {
20+
const collectionRepositoryStub: ICollectionsRepository = {} as ICollectionsRepository
21+
collectionRepositoryStub.deleteCollectionFeaturedItems = jest
22+
.fn()
23+
.mockRejectedValue(new WriteError())
24+
const testDeleteCollectionFeaturedItems = new DeleteCollectionFeaturedItems(
25+
collectionRepositoryStub
26+
)
27+
28+
await expect(testDeleteCollectionFeaturedItems.execute(1)).rejects.toThrow(WriteError)
29+
})
30+
})

0 commit comments

Comments
 (0)