@@ -562,108 +562,117 @@ describe('DataverseClient', () => {
562562 } )
563563 } )
564564
565- describe ( 'getLatestDatasetInformation' , ( ) => {
566- it ( 'should call axios with expected url' , async ( ) => {
567- const datasetId : string = random . number ( ) . toString ( )
565+ describe ( 'getLatestPublishedDatasetInformation' , ( ) => {
566+ let mockDatasetId : string
568567
569- await client . getLatestDatasetInformation ( datasetId )
568+ let getDatasetVersionStub : SinonStub
570569
571- assert . calledOnce ( axiosGetStub )
572- assert . calledWithExactly ( axiosGetStub , `${ host } /api/datasets/${ datasetId } ` , { headers : { 'X-Dataverse-key' : apiToken } } )
573- } )
570+ beforeEach ( ( ) => {
571+ mockDatasetId = random . number ( ) . toString ( )
574572
575- it ( 'should call axios with expected headers when no apiToken provided' , async ( ) => {
576- client = new DataverseClient ( host )
577- const datasetId : string = random . number ( ) . toString ( )
573+ getDatasetVersionStub = sandbox . stub ( DataverseClient . prototype , 'getDatasetVersion' )
574+ } )
578575
579- await client . getLatestDatasetInformation ( datasetId )
576+ it ( 'should call getDatasetVersion with expected input' , async ( ) => {
577+ await client . getLatestPublishedDatasetInformation ( mockDatasetId )
580578
581- assert . calledOnce ( axiosGetStub )
582- assert . calledWithExactly ( axiosGetStub , ` ${ host } /api/datasets/ ${ datasetId } ` , { headers : { 'X-Dataverse-key' : '' } } )
579+ assert . calledOnce ( getDatasetVersionStub )
580+ assert . calledWithExactly ( getDatasetVersionStub , mockDatasetId , ':latest-published' )
583581 } )
582+ } )
584583
585- it ( 'should return expected response' , async ( ) => {
586- const datasetId : string = random . number ( ) . toString ( )
587- const randomValue = random . word ( )
588- const expectedResponse = {
589- ...mockResponse ,
590- 'test' : randomValue
591- }
592- axiosGetStub
593- . withArgs ( `${ host } /api/datasets/${ datasetId } ` , { headers : { 'X-Dataverse-key' : apiToken } } )
594- . resolves ( { ...mockResponse , 'test' : randomValue } )
584+ describe ( 'getLatestDatasetInformation' , ( ) => {
585+ let mockDatasetId : string
595586
596- const response = await client . getLatestDatasetInformation ( datasetId )
587+ let getDatasetVersionStub : SinonStub
597588
598- expect ( response ) . to . be . deep . equal ( expectedResponse )
589+ beforeEach ( ( ) => {
590+ mockDatasetId = random . number ( ) . toString ( )
591+
592+ getDatasetVersionStub = sandbox . stub ( DataverseClient . prototype , 'getDatasetVersion' )
599593 } )
600594
601- it ( 'should throw expected error' , async ( ) => {
602- const datasetId : string = random . number ( ) . toString ( )
603- const errorMessage = random . words ( )
604- const errorCode = random . number ( )
605- axiosGetStub . rejects ( { response : { status : errorCode , data : { message : errorMessage } } } )
595+ it ( 'should call getDatasetVersion with expected input' , async ( ) => {
596+ await client . getLatestDatasetInformation ( mockDatasetId )
606597
607- let error : DataverseException = undefined
598+ assert . calledOnce ( getDatasetVersionStub )
599+ assert . calledWithExactly ( getDatasetVersionStub , mockDatasetId , ':latest' )
600+ } )
601+ } )
608602
609- await client . getLatestDatasetInformation ( datasetId ) . catch ( e => error = e )
603+ describe ( 'getDraftDatasetInformation' , ( ) => {
604+ let mockDatasetId : string
610605
611- expect ( error ) . to . be . instanceOf ( Error )
612- expect ( error . message ) . to . be . equal ( errorMessage )
613- expect ( error . errorCode ) . to . be . equal ( errorCode )
606+ let getDatasetVersionStub : SinonStub
607+
608+ beforeEach ( ( ) => {
609+ mockDatasetId = random . number ( ) . toString ( )
610+
611+ getDatasetVersionStub = sandbox . stub ( DataverseClient . prototype , 'getDatasetVersion' )
612+ } )
613+
614+ it ( 'should call getDatasetVersion with expected input' , async ( ) => {
615+ await client . getDraftDatasetInformation ( mockDatasetId )
616+
617+ assert . calledOnce ( getDatasetVersionStub )
618+ assert . calledWithExactly ( getDatasetVersionStub , mockDatasetId , ':draft' )
614619 } )
615620 } )
616621
617- describe ( 'getLatestDatasetInformationFromDOI' , ( ) => {
618- let doi : string
622+ describe ( 'getLatestPublishedDatasetInformationFromDOI' , ( ) => {
623+ let mockDatasetId : string
624+
625+ let getDatasetVersionFromDOIStub : SinonStub
619626
620627 beforeEach ( ( ) => {
621- doi = `${ random . number ( ) } .${ random . number ( ) } /${ random . word ( ) } /${ random . word ( ) } `
628+ mockDatasetId = random . number ( ) . toString ( )
629+
630+ getDatasetVersionFromDOIStub = sandbox . stub ( DataverseClient . prototype , 'getDatasetVersionFromDOI' )
622631 } )
623632
624- it ( 'should call axios with expected url ' , async ( ) => {
625- await client . getLatestDatasetInformationFromDOI ( doi )
633+ it ( 'should call getDatasetVersionFromDOI with expected input ' , async ( ) => {
634+ await client . getLatestPublishedDatasetInformationFromDOI ( mockDatasetId )
626635
627- assert . calledOnce ( axiosGetStub )
628- assert . calledWithExactly ( axiosGetStub , ` ${ host } /api/datasets/:persistentId?persistentId=doi: ${ doi } ` , { headers : { 'X-Dataverse-key' : apiToken } } )
636+ assert . calledOnce ( getDatasetVersionFromDOIStub )
637+ assert . calledWithExactly ( getDatasetVersionFromDOIStub , mockDatasetId , ':latest-published' )
629638 } )
639+ } )
630640
631- it ( 'should call axios with expected headers when no apiToken provided' , async ( ) => {
632- client = new DataverseClient ( host )
641+ describe ( 'getLatestDatasetInformationFromDOI' , ( ) => {
642+ let mockDoi : string
633643
634- await client . getLatestDatasetInformationFromDOI ( doi )
644+ let getDatasetVersionFromDOIStub : SinonStub
635645
636- assert . calledOnce ( axiosGetStub )
637- assert . calledWithExactly ( axiosGetStub , `${ host } /api/datasets/:persistentId?persistentId=doi:${ doi } ` , { headers : { 'X-Dataverse-key' : '' } } )
638- } )
646+ beforeEach ( ( ) => {
647+ mockDoi = `${ random . number ( ) } .${ random . number ( ) } /${ random . word ( ) } /${ random . word ( ) } `
639648
640- it ( 'should return expected response' , async ( ) => {
641- const randomValue = random . word ( )
642- const expectedResponse = {
643- ...mockResponse ,
644- 'test' : randomValue
645- }
646- axiosGetStub
647- . withArgs ( `${ host } /api/datasets/:persistentId?persistentId=doi:${ doi } ` , { headers : { 'X-Dataverse-key' : apiToken } } )
648- . resolves ( { ...mockResponse , 'test' : randomValue } )
649+ getDatasetVersionFromDOIStub = sandbox . stub ( DataverseClient . prototype , 'getDatasetVersionFromDOI' )
650+ } )
649651
650- const response = await client . getLatestDatasetInformationFromDOI ( doi )
652+ it ( 'should call getDatasetVersionFromDOI with expected input' , async ( ) => {
653+ await client . getLatestDatasetInformationFromDOI ( mockDoi )
651654
652- expect ( response ) . to . be . deep . equal ( expectedResponse )
655+ assert . calledOnce ( getDatasetVersionFromDOIStub )
656+ assert . calledWithExactly ( getDatasetVersionFromDOIStub , mockDoi , ':latest' )
653657 } )
658+ } )
654659
655- it ( 'should throw expected error' , async ( ) => {
656- const errorMessage = random . words ( )
657- const errorCode = random . number ( )
658- axiosGetStub . rejects ( { response : { status : errorCode , data : { message : errorMessage } } } )
660+ describe ( 'getDraftDatasetInformationFromDOI' , ( ) => {
661+ let mockDoi : string
659662
660- let error : DataverseException = undefined
663+ let getDatasetVersionFromDOIStub : SinonStub
661664
662- await client . getLatestDatasetInformationFromDOI ( doi ) . catch ( e => error = e )
665+ beforeEach ( ( ) => {
666+ mockDoi = `${ random . number ( ) } .${ random . number ( ) } /${ random . word ( ) } /${ random . word ( ) } `
663667
664- expect ( error ) . to . be . instanceOf ( Error )
665- expect ( error . message ) . to . be . equal ( errorMessage )
666- expect ( error . errorCode ) . to . be . equal ( errorCode )
668+ getDatasetVersionFromDOIStub = sandbox . stub ( DataverseClient . prototype , 'getDatasetVersionFromDOI' )
669+ } )
670+
671+ it ( 'should call getDatasetVersionFromDOI with expected input' , async ( ) => {
672+ await client . getDraftDatasetInformationFromDOI ( mockDoi )
673+
674+ assert . calledOnce ( getDatasetVersionFromDOIStub )
675+ assert . calledWithExactly ( getDatasetVersionFromDOIStub , mockDoi , ':draft' )
667676 } )
668677 } )
669678
@@ -775,6 +784,61 @@ describe('DataverseClient', () => {
775784 } )
776785 } )
777786
787+ describe ( 'getDatasetVersionFromDOI' , ( ) => {
788+ let mockDoi : string
789+ let mockVersion : string
790+
791+ beforeEach ( ( ) => {
792+ mockDoi = `${ random . number ( ) } .${ random . number ( ) } /${ random . word ( ) } /${ random . word ( ) } `
793+ mockVersion = random . number ( ) . toString ( )
794+ } )
795+
796+ it ( 'should call axios with expected url' , async ( ) => {
797+ await client . getDatasetVersionFromDOI ( mockDoi , mockVersion )
798+
799+ assert . calledOnce ( axiosGetStub )
800+ assert . calledWithExactly ( axiosGetStub , `${ host } /api/datasets/:persistentId/versions/${ mockVersion } ?persistentId=doi:${ mockDoi } ` , { headers : { 'X-Dataverse-key' : apiToken } } )
801+ } )
802+
803+ it ( 'should call axios with expected headers when no apiToken provided' , async ( ) => {
804+ client = new DataverseClient ( host )
805+
806+ await client . getDatasetVersionFromDOI ( mockDoi , mockVersion )
807+
808+ assert . calledOnce ( axiosGetStub )
809+ assert . calledWithExactly ( axiosGetStub , `${ host } /api/datasets/:persistentId/versions/${ mockVersion } ?persistentId=doi:${ mockDoi } ` , { headers : { 'X-Dataverse-key' : '' } } )
810+ } )
811+
812+ it ( 'should return expected response' , async ( ) => {
813+ const randomValue = random . word ( )
814+ const expectedResponse = {
815+ ...mockResponse ,
816+ 'test' : randomValue
817+ }
818+ axiosGetStub
819+ . withArgs ( `${ host } /api/datasets/:persistentId/versions/${ mockVersion } ?persistentId=doi:${ mockDoi } ` , { headers : { 'X-Dataverse-key' : apiToken } } )
820+ . resolves ( { ...mockResponse , 'test' : randomValue } )
821+
822+ const response = await client . getDatasetVersionFromDOI ( mockDoi , mockVersion )
823+
824+ expect ( response ) . to . be . deep . equal ( expectedResponse )
825+ } )
826+
827+ it ( 'should throw expected error' , async ( ) => {
828+ const errorMessage = random . words ( )
829+ const errorCode = random . number ( )
830+ axiosGetStub . rejects ( { response : { status : errorCode , data : { message : errorMessage } } } )
831+
832+ let error : DataverseException = undefined
833+
834+ await client . getDatasetVersionFromDOI ( mockDoi , mockVersion ) . catch ( e => error = e )
835+
836+ expect ( error ) . to . be . instanceOf ( Error )
837+ expect ( error . message ) . to . be . equal ( errorMessage )
838+ expect ( error . errorCode ) . to . be . equal ( errorCode )
839+ } )
840+ } )
841+
778842 describe ( 'getDatasetThumbnail' , ( ) => {
779843 it ( 'should call axios with expected url' , async ( ) => {
780844 const datasetId : string = random . number ( ) . toString ( )
0 commit comments