Skip to content

Commit 4510be5

Browse files
committed
test: functional cases
1 parent 8f2172f commit 4510be5

File tree

4 files changed

+186
-29
lines changed

4 files changed

+186
-29
lines changed

test/environment/.env

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
POSTGRES_VERSION=13
22
DATAVERSE_DB_USER=dataverse
33
SOLR_VERSION=9.8.0
4-
DATAVERSE_IMAGE_REGISTRY=docker.io
5-
DATAVERSE_IMAGE_TAG=unstable
4+
DATAVERSE_IMAGE_REGISTRY=ghcr.io
5+
DATAVERSE_IMAGE_TAG=11550-update-dv-object-featured-items-response
66
DATAVERSE_BOOTSTRAP_TIMEOUT=5m

test/functional/collections/GetCollectionFeaturedItems.test.ts

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,26 @@ import { TestConstants } from '../../testHelpers/TestConstants'
33
import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig'
44
import {
55
createCollectionCustomFeaturedItemViaApi,
6+
createCollectionDvObjectFeaturedItemViaApi,
7+
deleteCollectionFeaturedItemsViaApi,
68
deleteCollectionFeaturedItemViaApi
79
} from '../../testHelpers/collections/collectionFeaturedItemsHelper'
810
import {
911
createCollectionViaApi,
12+
publishCollectionViaApi,
1013
deleteCollectionViaApi
1114
} from '../../testHelpers/collections/collectionHelper'
1215
import { ROOT_COLLECTION_ID } from '../../../src/collections/domain/models/Collection'
13-
import { CustomFeaturedItem } from '../../../src/collections/domain/models/CollectionFeaturedItem'
16+
import {
17+
CustomFeaturedItem,
18+
DvObjectFeaturedItem,
19+
DvObjectFeaturedItemType
20+
} from '../../../src/collections/domain/models/CollectionFeaturedItem'
1421

1522
describe('execute', () => {
1623
const testCollectionAlias = 'getCollectionsFeaturedItemsTest'
17-
let testFeaturedItemId: number
24+
const featuredCollectionAlias = 'featured-collection-test'
25+
let testFeaturedItemIds: number[] = []
1826

1927
beforeEach(async () => {
2028
ApiConfig.init(
@@ -28,6 +36,12 @@ describe('execute', () => {
2836
try {
2937
await createCollectionViaApi(testCollectionAlias)
3038

39+
await createCollectionViaApi(featuredCollectionAlias, testCollectionAlias)
40+
41+
// Publish the collection to be featured otherwise it cannot be featured
42+
await publishCollectionViaApi(testCollectionAlias)
43+
await publishCollectionViaApi(featuredCollectionAlias)
44+
3145
const featuredItemCreated = await createCollectionCustomFeaturedItemViaApi(
3246
testCollectionAlias,
3347
{
@@ -38,19 +52,29 @@ describe('execute', () => {
3852
}
3953
)
4054

41-
testFeaturedItemId = featuredItemCreated.id
55+
const dvObjectFeaturedItemCreated = await createCollectionDvObjectFeaturedItemViaApi(
56+
testCollectionAlias,
57+
{
58+
type: 'dataverse',
59+
dvObjectIdentifier: featuredCollectionAlias,
60+
displayOrder: 2
61+
}
62+
)
63+
testFeaturedItemIds = [featuredItemCreated.id, dvObjectFeaturedItemCreated.id]
4264
} catch (error) {
65+
console.dir(error)
4366
throw new Error(`Error while creating collection featured item in ${testCollectionAlias}`)
4467
}
4568
})
4669

4770
afterAll(async () => {
4871
try {
49-
await deleteCollectionFeaturedItemViaApi(testFeaturedItemId)
72+
await deleteCollectionFeaturedItemsViaApi(testCollectionAlias)
73+
await deleteCollectionViaApi(featuredCollectionAlias)
5074
await deleteCollectionViaApi(testCollectionAlias)
5175
} catch (error) {
5276
throw new Error(
53-
`Tests afterAll(): Error while deleting featured item with id ${testFeaturedItemId}`
77+
`Tests afterAll(): Error while deleting featured item with id ${testFeaturedItemIds}`
5478
)
5579
}
5680
})
@@ -59,33 +83,39 @@ describe('execute', () => {
5983
const featuredItemsResponse = await getCollectionFeaturedItems.execute(testCollectionAlias)
6084

6185
const featuredItemOne = featuredItemsResponse[0] as CustomFeaturedItem
86+
const featuredItemTwo = featuredItemsResponse[1] as DvObjectFeaturedItem
6287

63-
expect(featuredItemsResponse.length).toBe(1)
64-
expect(featuredItemOne.id).toBe(testFeaturedItemId)
88+
expect(featuredItemsResponse.length).toBe(2)
89+
expect(featuredItemOne.id).toBe(testFeaturedItemIds[0])
6590
expect(featuredItemOne.displayOrder).toBe(1)
6691
expect(featuredItemOne.content).toBe('<p class="rte-paragraph">Test content</p>')
6792
expect(featuredItemOne.imageFileUrl).toBe(
6893
`http://localhost:8080/api/access/dataverseFeaturedItemImage/${featuredItemOne.id}`
6994
)
7095
expect(featuredItemOne.imageFileName).toBe('featured-item-test-image.png')
96+
97+
expect(featuredItemTwo.id).toBe(testFeaturedItemIds[1])
98+
expect(featuredItemTwo.type).toBe(DvObjectFeaturedItemType.COLLECTION)
99+
expect(featuredItemTwo.dvObjectIdentifier).toBe(featuredCollectionAlias)
100+
expect(featuredItemTwo.displayOrder).toBe(2)
71101
})
72102

73103
it('should return imageFileUrl and imageFileName as undefined when featured item does not have an image', async () => {
74104
const featuredItemCreated = await createCollectionCustomFeaturedItemViaApi(
75105
testCollectionAlias,
76106
{
77107
content: '<p class="rte-paragraph">Test content</p>',
78-
displayOrder: 2
108+
displayOrder: 3
79109
}
80110
)
81111

82112
const featuredItemsResponse = await getCollectionFeaturedItems.execute(testCollectionAlias)
83113

84-
const featuredItemTwo = featuredItemsResponse[1] as CustomFeaturedItem
114+
const featuredItemTwo = featuredItemsResponse[2] as CustomFeaturedItem
85115

86-
expect(featuredItemsResponse.length).toBe(2)
116+
expect(featuredItemsResponse.length).toBe(3)
87117
expect(featuredItemTwo.id).toBe(featuredItemCreated.id)
88-
expect(featuredItemTwo.displayOrder).toBe(2)
118+
expect(featuredItemTwo.displayOrder).toBe(3)
89119
expect(featuredItemTwo.content).toBe('<p class="rte-paragraph">Test content</p>')
90120
expect(featuredItemTwo.imageFileUrl).toBeUndefined()
91121
expect(featuredItemTwo.imageFileName).toBeUndefined()

test/functional/collections/UpdateCollectionFeaturedItems.test.ts

Lines changed: 96 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import {
22
ApiConfig,
33
CollectionFeaturedItemsDTO,
4+
createDataset,
5+
CreatedDatasetIdentifiers,
6+
getDatasetFiles,
47
updateCollectionFeaturedItems,
58
WriteError
69
} from '../../../src'
@@ -15,12 +18,29 @@ import {
1518
CONTENT_FIELD_WITH_ALL_TAGS,
1619
createCollectionViaApi,
1720
deleteCollectionViaApi,
18-
EXPECTED_CONTENT_FIELD_WITH_ALL_TAGS
21+
EXPECTED_CONTENT_FIELD_WITH_ALL_TAGS,
22+
publishCollectionViaApi
1923
} from '../../testHelpers/collections/collectionHelper'
20-
import { CustomFeaturedItem } from '../../../src/collections/domain/models/CollectionFeaturedItem'
24+
import {
25+
CustomFeaturedItem,
26+
DvObjectFeaturedItem,
27+
DvObjectFeaturedItemType
28+
// DvObjectFeaturedItemType
29+
} from '../../../src/collections/domain/models/CollectionFeaturedItem'
30+
import { uploadFileViaApi } from '../../testHelpers/files/filesHelper'
31+
import {
32+
deletePublishedDatasetViaApi,
33+
publishDatasetViaApi,
34+
waitForNoLocks
35+
} from '../../testHelpers/datasets/datasetHelper'
2136

2237
describe('execute', () => {
2338
const testCollectionAlias = 'updateCollectionFeaturedItemsTest'
39+
const featuredCollectionAlias = 'featured-collection-test-1'
40+
const testTextFile1Name = 'test-file-1.txt'
41+
42+
let testDatasetIds: CreatedDatasetIdentifiers
43+
let featuredFileId: number
2444

2545
beforeEach(async () => {
2646
ApiConfig.init(
@@ -31,22 +51,55 @@ describe('execute', () => {
3151
})
3252

3353
beforeAll(async () => {
54+
ApiConfig.init(
55+
TestConstants.TEST_API_URL,
56+
DataverseApiAuthMechanism.API_KEY,
57+
process.env.TEST_API_KEY
58+
)
59+
3460
try {
3561
await createCollectionViaApi(testCollectionAlias)
62+
await createCollectionViaApi(featuredCollectionAlias, testCollectionAlias)
63+
64+
// Publish the collection to be featured otherwise it cannot be featured
65+
await publishCollectionViaApi(testCollectionAlias)
66+
await publishCollectionViaApi(featuredCollectionAlias)
67+
68+
// Create a dataset to be featured
69+
try {
70+
testDatasetIds = await createDataset.execute(
71+
TestConstants.TEST_NEW_DATASET_DTO,
72+
testCollectionAlias
73+
)
74+
} catch (error) {
75+
throw new Error('Tests beforeAll(): Error while creating test dataset')
76+
}
77+
// Create a file to be featured
78+
await uploadFileViaApi(testDatasetIds.numericId, testTextFile1Name)
79+
80+
// Get the file id
81+
try {
82+
const datasetFiles = await getDatasetFiles.execute(testDatasetIds.numericId)
83+
featuredFileId = datasetFiles.files[0].id
84+
} catch (error) {
85+
throw new Error('Tests beforeAll(): Error while getting dataset files')
86+
}
87+
88+
await publishDatasetViaApi(testDatasetIds.numericId)
89+
await waitForNoLocks(testDatasetIds.numericId, 10)
3690
} catch (error) {
37-
throw new Error(
38-
`Tests beforeAll(): Error while creating test collection: ${testCollectionAlias}`
39-
)
91+
console.log(error)
92+
throw new Error('Tests beforeAll(): Error while creating test data')
4093
}
4194
})
4295

4396
afterAll(async () => {
4497
try {
98+
await deletePublishedDatasetViaApi(testDatasetIds.persistentId)
99+
await deleteCollectionViaApi(featuredCollectionAlias)
45100
await deleteCollectionViaApi(testCollectionAlias)
46101
} catch (error) {
47-
throw new Error(
48-
`Tests afterAll(): Error while deleting test collection: ${testCollectionAlias}`
49-
)
102+
throw new Error('Tests afterAll(): Error while deleting test data')
50103
}
51104
})
52105

@@ -72,6 +125,21 @@ describe('execute', () => {
72125
displayOrder: 2,
73126
file: createImageFile('featured-item-test-image-3.png'),
74127
keepFile: false
128+
},
129+
{
130+
type: DvObjectFeaturedItemType.COLLECTION,
131+
dvObjectIdentifier: featuredCollectionAlias,
132+
displayOrder: 3
133+
},
134+
{
135+
type: DvObjectFeaturedItemType.DATASET,
136+
dvObjectIdentifier: testDatasetIds.persistentId,
137+
displayOrder: 4
138+
},
139+
{
140+
type: DvObjectFeaturedItemType.FILE,
141+
dvObjectIdentifier: featuredFileId.toString(),
142+
displayOrder: 5
75143
}
76144
]
77145

@@ -83,8 +151,11 @@ describe('execute', () => {
83151
const firstItemResponse = updatedFeaturedItemsResponse[0] as CustomFeaturedItem
84152
const secondItemResponse = updatedFeaturedItemsResponse[1] as CustomFeaturedItem
85153
const thirdItemResponse = updatedFeaturedItemsResponse[2] as CustomFeaturedItem
154+
const fourthItemResponse = updatedFeaturedItemsResponse[3] as DvObjectFeaturedItem
155+
const fifthItemResponse = updatedFeaturedItemsResponse[4] as DvObjectFeaturedItem
156+
const sixthItemResponse = updatedFeaturedItemsResponse[5] as DvObjectFeaturedItem
86157

87-
expect(updatedFeaturedItemsResponse.length).toBe(3)
158+
expect(updatedFeaturedItemsResponse.length).toBe(6)
88159

89160
expect(firstItemResponse.content).toBe((newFeaturedItems[0] as CustomFeaturedItem).content)
90161
expect(firstItemResponse.displayOrder).toBe(newFeaturedItems[0].displayOrder)
@@ -102,6 +173,21 @@ describe('execute', () => {
102173
expect(thirdItemResponse.imageFileUrl).toBe(
103174
`http://localhost:8080/api/access/dataverseFeaturedItemImage/${updatedFeaturedItemsResponse[2].id}`
104175
)
176+
177+
expect(fourthItemResponse.type).toBe(DvObjectFeaturedItemType.COLLECTION)
178+
expect(fourthItemResponse.dvObjectIdentifier).toBe(featuredCollectionAlias)
179+
expect(fourthItemResponse.displayOrder).toBe(newFeaturedItems[3].displayOrder)
180+
expect(fourthItemResponse.id).toBeDefined()
181+
182+
expect(fifthItemResponse.type).toBe(DvObjectFeaturedItemType.DATASET)
183+
expect(fifthItemResponse.dvObjectIdentifier).toBe(testDatasetIds.persistentId)
184+
expect(fifthItemResponse.displayOrder).toBe(newFeaturedItems[4].displayOrder)
185+
expect(fifthItemResponse.id).toBeDefined()
186+
187+
expect(sixthItemResponse.type).toBe(DvObjectFeaturedItemType.FILE)
188+
expect(sixthItemResponse.dvObjectIdentifier).toBe(featuredFileId.toString())
189+
expect(sixthItemResponse.displayOrder).toBe(newFeaturedItems[5].displayOrder)
190+
expect(sixthItemResponse.id).toBeDefined()
105191
})
106192

107193
test('should throw an error when collection does not exist', async () => {
@@ -187,6 +273,7 @@ describe('execute', () => {
187273

188274
testFeaturedItemId = featuredItemCreated.id
189275
} catch (error) {
276+
console.log(JSON.stringify(error, null, 2))
190277
throw new Error(`Error while creating collection featured item in ${testCollectionAlias}`)
191278
}
192279
})

0 commit comments

Comments
 (0)