11import {
22 ApiConfig ,
3+ createDataset ,
34 CreatedDatasetIdentifiers ,
45 DatasetPreview ,
56 FilePreview ,
6- ReadError ,
7- createDataset ,
8- getMyDataCollectionItems
7+ getMyDataCollectionItems ,
8+ ReadError
99} from '../../../src'
1010import { TestConstants } from '../../testHelpers/TestConstants'
1111import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig'
@@ -27,21 +27,50 @@ const testPublishingStatuses = [
2727]
2828
2929describe ( 'execute' , ( ) => {
30- beforeAll ( ( ) => {
30+ const testCollectionAlias = 'collectionsRepositoryFunctionalTestCollection'
31+ let testDatasetIds : CreatedDatasetIdentifiers
32+ const testTextFile1Name = 'test-file-1.txt'
33+
34+ beforeAll ( async ( ) => {
3135 ApiConfig . init (
3236 TestConstants . TEST_API_URL ,
3337 DataverseApiAuthMechanism . API_KEY ,
3438 process . env . TEST_API_KEY
3539 )
40+ await createCollectionViaApi ( testCollectionAlias )
41+ try {
42+ testDatasetIds = await createDataset . execute (
43+ TestConstants . TEST_NEW_DATASET_DTO ,
44+ testCollectionAlias
45+ )
46+ } catch ( error ) {
47+ throw new Error ( 'Tests beforeAll(): Error while creating test dataset' )
48+ }
49+ await uploadFileViaApi ( testDatasetIds . numericId , testTextFile1Name ) . catch ( ( ) => {
50+ throw new Error ( `Tests beforeAll(): Error while uploading file ${ testTextFile1Name } ` )
51+ } )
52+ } )
53+
54+ afterAll ( async ( ) => {
55+ try {
56+ await deleteUnpublishedDatasetViaApi ( testDatasetIds . numericId )
57+ } catch ( error ) {
58+ throw new Error ( 'Tests afterAll(): Error while deleting test dataset' )
59+ }
60+ try {
61+ await deleteCollectionViaApi ( testCollectionAlias )
62+ } catch ( error ) {
63+ throw new Error ( 'Tests afterAll(): Error while deleting test collection' )
64+ }
3665 } )
37- test ( 'should return ? when repository returns empty item subset' , async ( ) => {
66+ test ( 'should return error message when repository returns empty item subset' , async ( ) => {
3867 expect . assertions ( 2 )
3968 let readError : ReadError | undefined = undefined
4069 try {
4170 await getMyDataCollectionItems . execute (
4271 testRoleIds ,
4372 testCollectionItemTypes ,
44- testPublishingStatuses ,
73+ [ PublicationStatus . Deaccessioned ] ,
4574 undefined ,
4675 undefined ,
4776 undefined
@@ -56,122 +85,86 @@ describe('execute', () => {
5685 )
5786 }
5887 } ) ,
59- describe ( 'test with created collection items' , ( ) => {
60- const testCollectionAlias = 'collectionsRepositoryFunctionalTestCollection'
61- let testDatasetIds : CreatedDatasetIdentifiers
62- const testTextFile1Name = 'test-file-1.txt'
63-
64- beforeAll ( async ( ) => {
65- await createCollectionViaApi ( testCollectionAlias )
66- try {
67- testDatasetIds = await createDataset . execute (
68- TestConstants . TEST_NEW_DATASET_DTO ,
69- testCollectionAlias
70- )
71- } catch ( error ) {
72- throw new Error ( 'Tests beforeAll(): Error while creating test dataset' )
73- }
74- await uploadFileViaApi ( testDatasetIds . numericId , testTextFile1Name ) . catch ( ( ) => {
75- throw new Error ( `Tests beforeAll(): Error while uploading file ${ testTextFile1Name } ` )
76- } )
77- } )
78-
79- afterAll ( async ( ) => {
80- try {
81- await deleteUnpublishedDatasetViaApi ( testDatasetIds . numericId )
82- } catch ( error ) {
83- throw new Error ( 'Tests afterAll(): Error while deleting test dataset' )
84- }
85- try {
86- await deleteCollectionViaApi ( testCollectionAlias )
87- } catch ( error ) {
88- throw new Error ( 'Tests afterAll(): Error while deleting test collection' )
89- }
90- } )
88+ test ( 'should return items when valid roles,collection types, and publishingStatuses are provided' , async ( ) => {
89+ // Give enough time to Solr for indexing
90+ await new Promise ( ( resolve ) => setTimeout ( resolve , 5000 ) )
9191
92- test ( 'should return items when valid roles,collection types, and publishingStatuses are provided' , async ( ) => {
93- // Give enough time to Solr for indexing
94- await new Promise ( ( resolve ) => setTimeout ( resolve , 5000 ) )
92+ try {
93+ const actual = await getMyDataCollectionItems . execute (
94+ testRoleIds ,
95+ testCollectionItemTypes ,
96+ testPublishingStatuses
97+ )
9598
96- try {
97- const actual = await getMyDataCollectionItems . execute (
98- testRoleIds ,
99- testCollectionItemTypes ,
100- testPublishingStatuses
101- )
99+ const actualFilePreview = actual . items [ 1 ] as FilePreview
100+ const actualDatasetPreview = actual . items [ 0 ] as DatasetPreview
102101
103- const actualFilePreview = actual . items [ 1 ] as FilePreview
104- const actualDatasetPreview = actual . items [ 0 ] as DatasetPreview
102+ expect ( actualFilePreview . name ) . toBe ( 'test-file-1.txt' )
103+ expect ( actualDatasetPreview . title ) . toBe ( 'Dataset created using the createDataset use case' )
105104
106- expect ( actualFilePreview . name ) . toBe ( 'test-file-1.txt' )
107- expect ( actualDatasetPreview . title ) . toBe (
108- 'Dataset created using the createDataset use case'
109- )
110-
111- expect ( actual . totalItemCount ) . toBe ( 2 )
112- } catch ( error ) {
113- throw new Error ( 'Item subset should be retrieved' )
114- }
115- } )
116-
117- test ( 'should return an error message when no role is specified' , async ( ) => {
118- expect . assertions ( 2 )
119- let readError : ReadError | undefined = undefined
120- try {
121- await getMyDataCollectionItems . execute ( [ ] , [ ] , [ ] , undefined , undefined , undefined )
122- throw new Error ( 'Use case should throw an error' )
123- } catch ( error ) {
124- readError = error as ReadError
125- } finally {
126- expect ( readError ) . toBeInstanceOf ( ReadError )
127- expect ( readError ?. message ) . toEqual (
128- `There was an error when reading the resource. Reason was: No results. Please select at least one Role.`
129- )
130- }
131- } )
132- test ( 'should return an error message when no publication status is specified' , async ( ) => {
133- expect . assertions ( 2 )
134- let readError : ReadError | undefined = undefined
135- try {
136- await getMyDataCollectionItems . execute (
137- testRoleIds ,
138- testCollectionItemTypes ,
139- [ ] ,
140- undefined ,
141- undefined ,
142- undefined
143- )
144- throw new Error ( 'Use case should throw an error' )
145- } catch ( error ) {
146- readError = error as ReadError
147- } finally {
148- expect ( readError ) . toBeInstanceOf ( ReadError )
149- expect ( readError ?. message ) . toEqual (
150- `There was an error when reading the resource. Reason was: No user found for: "Published, Unpublished, Draft, In Review, Deaccessioned"`
151- )
152- }
153- } )
154- test ( 'should an error message when no collection type is specified' , async ( ) => {
155- expect . assertions ( 2 )
156- let readError : ReadError | undefined = undefined
157- try {
158- await getMyDataCollectionItems . execute (
159- testRoleIds ,
160- testCollectionItemTypes ,
161- [ ] ,
162- undefined ,
163- undefined ,
164- undefined
165- )
166- throw new Error ( 'Use case should throw an error' )
167- } catch ( error ) {
168- readError = error as ReadError
169- } finally {
170- expect ( readError ) . toBeInstanceOf ( ReadError )
171- expect ( readError ?. message ) . toEqual (
172- `There was an error when reading the resource. Reason was: No user found for: "Published, Unpublished, Draft, In Review, Deaccessioned"`
173- )
174- }
175- } )
105+ expect ( actual . totalItemCount ) . toBe ( 2 )
106+ } catch ( error ) {
107+ throw new Error ( 'Item subset should be retrieved' )
108+ }
176109 } )
110+
111+ test ( 'should return an error message when no role is specified' , async ( ) => {
112+ expect . assertions ( 2 )
113+ let readError : ReadError | undefined = undefined
114+ try {
115+ await getMyDataCollectionItems . execute ( [ ] , [ ] , [ ] , undefined , undefined , undefined )
116+ throw new Error ( 'Use case should throw an error' )
117+ } catch ( error ) {
118+ readError = error as ReadError
119+ } finally {
120+ expect ( readError ) . toBeInstanceOf ( ReadError )
121+ expect ( readError ?. message ) . toEqual (
122+ `There was an error when reading the resource. Reason was: No results. Please select at least one Role.`
123+ )
124+ }
125+ } )
126+ test ( 'should return an error message when no publication status is specified' , async ( ) => {
127+ expect . assertions ( 2 )
128+ let readError : ReadError | undefined = undefined
129+ try {
130+ await getMyDataCollectionItems . execute (
131+ testRoleIds ,
132+ testCollectionItemTypes ,
133+ [ ] ,
134+ undefined ,
135+ undefined ,
136+ undefined
137+ )
138+ throw new Error ( 'Use case should throw an error' )
139+ } catch ( error ) {
140+ readError = error as ReadError
141+ } finally {
142+ expect ( readError ) . toBeInstanceOf ( ReadError )
143+ expect ( readError ?. message ) . toEqual (
144+ `There was an error when reading the resource. Reason was: No user found for: "Published, Unpublished, Draft, In Review, Deaccessioned"`
145+ )
146+ }
147+ } )
148+ test ( 'should an error message when no collection type is specified' , async ( ) => {
149+ expect . assertions ( 2 )
150+ let readError : ReadError | undefined = undefined
151+ try {
152+ await getMyDataCollectionItems . execute (
153+ testRoleIds ,
154+ testCollectionItemTypes ,
155+ [ ] ,
156+ undefined ,
157+ undefined ,
158+ undefined
159+ )
160+ throw new Error ( 'Use case should throw an error' )
161+ } catch ( error ) {
162+ readError = error as ReadError
163+ } finally {
164+ expect ( readError ) . toBeInstanceOf ( ReadError )
165+ expect ( readError ?. message ) . toEqual (
166+ `There was an error when reading the resource. Reason was: No user found for: "Published, Unpublished, Draft, In Review, Deaccessioned"`
167+ )
168+ }
169+ } )
177170} )
0 commit comments