11import {
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
2237describe ( '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