@@ -115,7 +115,127 @@ describe('DatasetsRepository', () => {
115115 TestConstants . TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_SESSION_COOKIE . withCredentials ,
116116 headers : TestConstants . TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_SESSION_COOKIE . headers
117117 }
118+ describe ( 'with custom terms of use' , ( ) => {
119+ test ( 'should return Dataset with customTerms when license is undefined' , async ( ) => {
120+ jest . spyOn ( axios , 'get' ) . mockResolvedValue ( testDatasetVersionSuccessfulResponse )
121+ const expectedApiEndpoint = `${ TestConstants . TEST_API_URL } /datasets/${ testDatasetModel . id } /versions/${ testVersionId } `
122+
123+ // API Key auth
124+ let actual = await sut . getDataset (
125+ testDatasetModel . id ,
126+ testVersionId ,
127+ testIncludeDeaccessioned ,
128+ false
129+ )
130+
131+ expect ( axios . get ) . toHaveBeenCalledWith ( expectedApiEndpoint , expectedRequestConfigApiKey )
132+ expect ( actual ) . toStrictEqual ( testDatasetModel )
133+
134+ // Session cookie auth
135+ ApiConfig . init ( TestConstants . TEST_API_URL , DataverseApiAuthMechanism . SESSION_COOKIE )
136+ actual = await sut . getDataset (
137+ testDatasetModel . id ,
138+ testVersionId ,
139+ testIncludeDeaccessioned ,
140+ false
141+ )
142+ expect ( axios . get ) . toHaveBeenCalledWith (
143+ expectedApiEndpoint ,
144+ expectedRequestConfigSessionCookie
145+ )
146+ expect ( actual ) . toStrictEqual ( testDatasetModel )
147+ } )
148+
149+ test ( 'should return Dataset when providing id, version id, and response with license is successful' , async ( ) => {
150+ const testDatasetLicense = createDatasetLicenseModel ( )
151+ const testDatasetVersionWithLicenseSuccessfulResponse = {
152+ data : {
153+ status : 'OK' ,
154+ data : createDatasetVersionPayload ( testDatasetLicense )
155+ }
156+ }
157+ jest . spyOn ( axios , 'get' ) . mockResolvedValue ( testDatasetVersionWithLicenseSuccessfulResponse )
158+
159+ const actual = await sut . getDataset (
160+ testDatasetModel . id ,
161+ testVersionId ,
162+ testIncludeDeaccessioned ,
163+ false
164+ )
165+
166+ expect ( axios . get ) . toHaveBeenCalledWith (
167+ `${ TestConstants . TEST_API_URL } /datasets/${ testDatasetModel . id } /versions/${ testVersionId } ` ,
168+ expectedRequestConfigApiKey
169+ )
170+ expect ( actual ) . toStrictEqual ( createDatasetModel ( testDatasetLicense ) )
171+ } )
172+
173+ test ( 'should return Dataset when providing id, version id, and response with license without icon URI is successful' , async ( ) => {
174+ const testDatasetLicenseWithoutIconUri = createDatasetLicenseModel ( false )
175+ const testDatasetVersionWithLicenseSuccessfulResponse = {
176+ data : {
177+ status : 'OK' ,
178+ data : createDatasetVersionPayload ( testDatasetLicenseWithoutIconUri )
179+ }
180+ }
181+ jest . spyOn ( axios , 'get' ) . mockResolvedValue ( testDatasetVersionWithLicenseSuccessfulResponse )
182+
183+ const actual = await sut . getDataset (
184+ testDatasetModel . id ,
185+ testVersionId ,
186+ testIncludeDeaccessioned ,
187+ false
188+ )
189+
190+ expect ( axios . get ) . toHaveBeenCalledWith (
191+ `${ TestConstants . TEST_API_URL } /datasets/${ testDatasetModel . id } /versions/${ testVersionId } ` ,
192+ expectedRequestConfigApiKey
193+ )
194+ expect ( actual ) . toStrictEqual ( createDatasetModel ( testDatasetLicenseWithoutIconUri ) )
195+ } )
196+
197+ test ( 'should return dataset with alternative persistent id, publication date and citation date when they are present in the response' , async ( ) => {
198+ const testDatasetVersionWithAlternativePersistentIdAndDatesSuccessfulResponse = {
199+ data : {
200+ status : 'OK' ,
201+ data : createDatasetVersionPayload ( undefined , true )
202+ }
203+ }
204+ jest
205+ . spyOn ( axios , 'get' )
206+ . mockResolvedValue (
207+ testDatasetVersionWithAlternativePersistentIdAndDatesSuccessfulResponse
208+ )
118209
210+ const actual = await sut . getDataset (
211+ testDatasetModel . id ,
212+ testVersionId ,
213+ testIncludeDeaccessioned ,
214+ false
215+ )
216+
217+ expect ( axios . get ) . toHaveBeenCalledWith (
218+ `${ TestConstants . TEST_API_URL } /datasets/${ testDatasetModel . id } /versions/${ testVersionId } ` ,
219+ expectedRequestConfigApiKey
220+ )
221+ expect ( actual ) . toStrictEqual ( createDatasetModel ( undefined , true ) )
222+ } )
223+
224+ test ( 'should return error on repository read error' , async ( ) => {
225+ jest . spyOn ( axios , 'get' ) . mockRejectedValue ( TestConstants . TEST_ERROR_RESPONSE )
226+
227+ let error = undefined as unknown as ReadError
228+ await sut
229+ . getDataset ( testDatasetModel . id , testVersionId , testIncludeDeaccessioned , false )
230+ . catch ( ( e ) => ( error = e ) )
231+
232+ expect ( axios . get ) . toHaveBeenCalledWith (
233+ `${ TestConstants . TEST_API_URL } /datasets/${ testDatasetModel . id } /versions/${ testVersionId } ` ,
234+ expectedRequestConfigApiKey
235+ )
236+ expect ( error ) . toBeInstanceOf ( Error )
237+ } )
238+ } )
119239 describe ( 'by numeric id' , ( ) => {
120240 test ( 'should return Dataset when providing id, version id, and response is successful' , async ( ) => {
121241 jest . spyOn ( axios , 'get' ) . mockResolvedValue ( testDatasetVersionSuccessfulResponse )
0 commit comments