@@ -12,6 +12,7 @@ import { BasicDatasetInformation } from '../src/@types/basicDataset'
1212import { DatasetUtil } from '../src/utils/datasetUtil'
1313import fs from 'fs'
1414import { DatasetVersionUpgradeType } from '../src/@types/datasetVersionUpgradeType'
15+ import { ResponseUtil } from '../src/utils/ResponseUtil'
1516
1617describe ( 'DataverseClient' , ( ) => {
1718 const sandbox : SinonSandbox = createSandbox ( )
@@ -20,6 +21,7 @@ describe('DataverseClient', () => {
2021 let host : string
2122 let client : DataverseClient
2223
24+ let mockErrorMessage : string
2325 let mockResponse : object
2426 let mockDatasetInformation : object
2527
@@ -28,12 +30,14 @@ describe('DataverseClient', () => {
2830 let requestPostStub : SinonStub
2931
3032 let mapBasicDatasetInformationStub : SinonStub
33+ let getErrorMessageStub : SinonStub
3134
3235 beforeEach ( ( ) => {
3336 apiToken = random . uuid ( )
3437 host = internet . url ( )
3538 client = new DataverseClient ( host , apiToken )
3639
40+ mockErrorMessage = random . words ( )
3741 mockResponse = {
3842 status : random . number ( ) ,
3943 data : { }
@@ -61,6 +65,7 @@ describe('DataverseClient', () => {
6165 requestPostStub = sandbox . stub ( request , 'post' ) . resolves ( mockResponse )
6266
6367 mapBasicDatasetInformationStub = sandbox . stub ( DatasetUtil , 'mapBasicDatasetInformation' ) . returns ( mockDatasetInformation )
68+ getErrorMessageStub = sandbox . stub ( ResponseUtil , 'getErrorMessage' ) . returns ( mockErrorMessage )
6469 } )
6570
6671 afterEach ( ( ) => {
@@ -905,8 +910,13 @@ describe('DataverseClient', () => {
905910 const testImage = fs . readFileSync ( path . resolve ( __dirname , '../test/assets/theam.png' ) , 'base64' )
906911 const imageBuffer = Buffer . from ( testImage , 'base64' )
907912
913+ let datasetId : string
914+
915+ beforeEach ( ( ) => {
916+ datasetId = random . number ( ) . toString ( )
917+ } )
918+
908919 it ( 'should call request with expected url' , async ( ) => {
909- const datasetId : string = random . number ( ) . toString ( )
910920 const expectedRequest = {
911921 url : `${ host } /api/datasets/${ datasetId } /thumbnail` ,
912922 headers : { 'X-Dataverse-key' : apiToken } ,
@@ -921,7 +931,6 @@ describe('DataverseClient', () => {
921931 } )
922932
923933 it ( 'should call request with expected headers when no apiToken provided' , async ( ) => {
924- const datasetId : string = random . number ( ) . toString ( )
925934 const expectedRequest = {
926935 url : `${ host } /api/datasets/${ datasetId } /thumbnail` ,
927936 headers : { 'X-Dataverse-key' : '' } ,
@@ -942,7 +951,6 @@ describe('DataverseClient', () => {
942951 ...mockResponse ,
943952 'test' : randomValue
944953 }
945- const datasetId : string = random . number ( ) . toString ( )
946954
947955 const expectedRequest = {
948956 url : `${ host } /api/datasets/${ datasetId } /thumbnail` ,
@@ -958,19 +966,40 @@ describe('DataverseClient', () => {
958966 expect ( response ) . to . be . deep . equal ( expectedResponse )
959967 } )
960968
961- it ( 'should throw expected error' , async ( ) => {
962- const datasetId = random . word ( )
963- const errorMessage = random . words ( )
964- const errorCode = random . number ( )
965- requestPostStub . rejects ( { response : { statusCode : errorCode , body : JSON . stringify ( { message : errorMessage } ) } } )
969+ describe ( 'on error' , ( ) => {
970+ let mockErrorCode : number
971+ let mockBody : string
966972
967- let error : DataverseException = undefined
973+ beforeEach ( ( ) => {
974+ mockErrorCode = random . number ( )
975+ mockBody = random . words ( )
976+ requestPostStub . rejects ( {
977+ response : {
978+ statusCode : mockErrorCode ,
979+ body : mockBody
980+ }
981+ } )
982+ } )
968983
969- await client . uploadDatasetThumbnail ( datasetId , imageBuffer ) . catch ( e => error = e )
984+ it ( 'should call getErrorMessage' , async ( ) => {
985+ let error : DataverseException = undefined
970986
971- expect ( error ) . to . be . instanceOf ( Error )
972- expect ( error . message ) . to . be . equal ( errorMessage )
973- expect ( error . errorCode ) . to . be . equal ( errorCode )
987+ await client . uploadDatasetThumbnail ( datasetId , imageBuffer ) . catch ( e => error = e )
988+
989+ expect ( error ) . to . be . instanceOf ( Error )
990+ assert . calledOnce ( getErrorMessageStub )
991+ assert . calledWithExactly ( getErrorMessageStub , mockBody )
992+ } )
993+
994+ it ( 'should throw expected error' , async ( ) => {
995+ let error : DataverseException = undefined
996+
997+ await client . uploadDatasetThumbnail ( datasetId , imageBuffer ) . catch ( e => error = e )
998+
999+ expect ( error ) . to . be . instanceOf ( Error )
1000+ expect ( error . message ) . to . be . equal ( mockErrorMessage )
1001+ expect ( error . errorCode ) . to . be . equal ( mockErrorCode )
1002+ } )
9741003 } )
9751004 } )
9761005
@@ -1238,18 +1267,40 @@ describe('DataverseClient', () => {
12381267 expect ( response ) . to . be . deep . equal ( expectedResponse )
12391268 } )
12401269
1241- it ( 'should throw expected error' , async ( ) => {
1242- const errorMessage = random . words ( )
1243- const errorCode = random . number ( )
1244- requestPostStub . rejects ( { response : { statusCode : errorCode , body : { message : errorMessage } } } )
1270+ describe ( 'on error' , ( ) => {
1271+ let mockErrorCode : number
1272+ let mockBody : string
12451273
1246- let error : DataverseException = undefined
1274+ beforeEach ( ( ) => {
1275+ mockErrorCode = random . number ( )
1276+ mockBody = random . words ( )
1277+ requestPostStub . rejects ( {
1278+ response : {
1279+ statusCode : mockErrorCode ,
1280+ body : mockBody
1281+ }
1282+ } )
1283+ } )
12471284
1248- await client . replaceFile ( mockFileId , mockFilename , fileBuffer ) . catch ( e => error = e )
1285+ it ( 'should call getErrorMessage' , async ( ) => {
1286+ let error : DataverseException = undefined
12491287
1250- expect ( error ) . to . be . instanceOf ( Error )
1251- expect ( error . message ) . to . be . equal ( errorMessage )
1252- expect ( error . errorCode ) . to . be . equal ( errorCode )
1288+ await client . replaceFile ( mockFileId , mockFilename , fileBuffer ) . catch ( e => error = e )
1289+
1290+ expect ( error ) . to . be . instanceOf ( Error )
1291+ assert . calledOnce ( getErrorMessageStub )
1292+ assert . calledWithExactly ( getErrorMessageStub , mockBody )
1293+ } )
1294+
1295+ it ( 'should throw expected error' , async ( ) => {
1296+ let error : DataverseException = undefined
1297+
1298+ await client . replaceFile ( mockFileId , mockFilename , fileBuffer ) . catch ( e => error = e )
1299+
1300+ expect ( error ) . to . be . instanceOf ( Error )
1301+ expect ( error . message ) . to . be . equal ( mockErrorMessage )
1302+ expect ( error . errorCode ) . to . be . equal ( mockErrorCode )
1303+ } )
12531304 } )
12541305 } )
12551306
0 commit comments