@@ -45,6 +45,8 @@ import {
4545} from '../../testHelpers/collections/collectionHelper'
4646import { RestrictFileDTO } from '../../../src/files/domain/dtos/RestrictFileDTO'
4747import { DatasetsRepository } from '../../../src/datasets/infra/repositories/DatasetsRepository'
48+ import { FileVersionSummaryInfo } from '../../../src/files/domain/models/FileVersionSummaryInfo'
49+ import { DatasetVersionState } from '../../../src/datasets'
4850import { DirectUploadClient } from '../../../src/files/infra/clients/DirectUploadClient'
4951
5052describe ( 'FilesRepository' , ( ) => {
@@ -764,6 +766,166 @@ describe('FilesRepository', () => {
764766 } )
765767 } )
766768
769+ describe ( 'getFileVersionSummaries' , ( ) => {
770+ let fileTestDatasetIds : CreatedDatasetIdentifiers
771+ const testTextFile1Name = 'test-file-1.txt'
772+
773+ beforeEach ( async ( ) => {
774+ try {
775+ fileTestDatasetIds = await createDataset . execute ( TestConstants . TEST_NEW_DATASET_DTO )
776+ } catch ( error ) {
777+ throw new Error ( 'Tests beforeEach(): Error while creating test dataset' )
778+ }
779+ await uploadFileViaApi ( fileTestDatasetIds . numericId , testTextFile1Name ) . catch ( ( ) => {
780+ throw new Error ( `Tests beforeEach(): Error while uploading file ${ testTextFile1Name } ` )
781+ } )
782+ } )
783+
784+ test ( 'should return file version summaries when file draft exists' , async ( ) => {
785+ const currentTestFilesSubset = await sut . getDatasetFiles (
786+ fileTestDatasetIds . numericId ,
787+ latestDatasetVersionId ,
788+ false ,
789+ FileOrderCriteria . NAME_AZ
790+ )
791+ const testFile = currentTestFilesSubset . files [ 0 ]
792+ const actual = await sut . getFileVersionSummaries ( testFile . id )
793+
794+ const fileSummmaries : FileVersionSummaryInfo = {
795+ datasetVersion : 'DRAFT' ,
796+ versionState : DatasetVersionState . DRAFT ,
797+ contributors : 'Dataverse Admin' ,
798+ datafileId : testFile . id ,
799+ persistentId : testFile . persistentId ,
800+ fileDifferenceSummary : { file : 'Added' }
801+ }
802+
803+ expect ( actual ) . toHaveLength ( 1 )
804+ expect ( actual [ 0 ] ) . toEqual ( fileSummmaries )
805+ deleteUnpublishedDatasetViaApi ( fileTestDatasetIds . numericId )
806+ } )
807+
808+ test ( 'should return file version summaries when dataset is deaccessioned' , async ( ) => {
809+ await publishDatasetViaApi ( fileTestDatasetIds . numericId ) . catch ( ( ) => {
810+ throw new Error ( 'Error while publishing test Dataset' )
811+ } )
812+
813+ await waitForNoLocks ( fileTestDatasetIds . numericId , 10 ) . catch ( ( ) => {
814+ throw new Error ( 'Error while waiting for no locks' )
815+ } )
816+
817+ const datasetFiles = await sut . getDatasetFiles (
818+ fileTestDatasetIds . numericId ,
819+ latestDatasetVersionId ,
820+ false ,
821+ FileOrderCriteria . NAME_AZ
822+ )
823+ const testFile = datasetFiles . files [ 0 ]
824+ const publishedFileVersionSummariesActual = await sut . getFileVersionSummaries ( testFile . id )
825+
826+ const publishedFileVersionSummmaries : FileVersionSummaryInfo = {
827+ datasetVersion : '1.0' ,
828+ publishedDate : publishedFileVersionSummariesActual [ 0 ] . publishedDate ,
829+ versionState : DatasetVersionState . RELEASED ,
830+ contributors : 'Dataverse Admin' ,
831+ datafileId : testFile . id ,
832+ persistentId : testFile . persistentId ,
833+ fileDifferenceSummary : { file : 'Added' }
834+ }
835+
836+ expect ( publishedFileVersionSummariesActual ) . toHaveLength ( 1 )
837+ expect ( publishedFileVersionSummariesActual [ 0 ] ) . toEqual ( publishedFileVersionSummmaries )
838+
839+ await deaccessionDatasetViaApi ( fileTestDatasetIds . numericId , '1.0' ) . catch ( ( ) => {
840+ throw new Error ( 'Error while deaccessioning test Dataset' )
841+ } )
842+
843+ const actual = await sut . getFileVersionSummaries ( testFile . id )
844+
845+ const fileSummmaries : FileVersionSummaryInfo = {
846+ datasetVersion : '1.0' ,
847+ publishedDate : publishedFileVersionSummariesActual [ 0 ] . publishedDate ,
848+ versionState : DatasetVersionState . DEACCESSIONED ,
849+ contributors : 'Dataverse Admin' ,
850+ datafileId : testFile . id ,
851+ persistentId : testFile . persistentId ,
852+ fileDifferenceSummary : {
853+ deaccessionedReason : 'Test reason.' ,
854+ file : 'Added'
855+ }
856+ }
857+
858+ expect ( actual ) . toHaveLength ( 1 )
859+ expect ( actual [ 0 ] ) . toEqual ( fileSummmaries )
860+ deletePublishedDatasetViaApi ( fileTestDatasetIds . persistentId )
861+ } )
862+
863+ test ( 'should return file version summaries when file is updated' , async ( ) => {
864+ await publishDatasetViaApi ( fileTestDatasetIds . numericId ) . catch ( ( ) => {
865+ throw new Error ( 'Error while publishing test Dataset' )
866+ } )
867+
868+ await waitForNoLocks ( fileTestDatasetIds . numericId , 10 ) . catch ( ( ) => {
869+ throw new Error ( 'Error while waiting for no locks' )
870+ } )
871+
872+ const datasetFiles = await sut . getDatasetFiles (
873+ fileTestDatasetIds . numericId ,
874+ latestDatasetVersionId ,
875+ false ,
876+ FileOrderCriteria . NAME_AZ
877+ )
878+ const testFile = datasetFiles . files [ 0 ]
879+ const actual = await sut . getFileVersionSummaries ( testFile . id )
880+
881+ expect ( actual ) . toHaveLength ( 1 )
882+
883+ await sut . updateFileMetadata ( testFile . id , {
884+ description : 'My description test.' ,
885+ categories : [ 'Data' , 'Test' ] ,
886+ label : 'myfile.txt' ,
887+ directoryLabel : 'mydir' ,
888+ restrict : true
889+ } )
890+ const updatedFileVersionSummariesActual = await sut . getFileVersionSummaries ( testFile . id )
891+ const updatedFileVersionSummaries : FileVersionSummaryInfo = {
892+ datasetVersion : 'DRAFT' ,
893+ versionState : DatasetVersionState . DRAFT ,
894+ contributors : 'Dataverse Admin' ,
895+ datafileId : testFile . id ,
896+ persistentId : testFile . persistentId ,
897+ publishedDate : actual [ 0 ] . publishedDate ,
898+ versionNote : undefined ,
899+ fileDifferenceSummary : {
900+ fileMetadata : [
901+ {
902+ name : 'File Name' ,
903+ action : 'Changed'
904+ } ,
905+ {
906+ name : 'Description' ,
907+ action : 'Changed'
908+ }
909+ ] ,
910+ fileTags : {
911+ Added : 2
912+ } ,
913+ fileAccess : 'Restricted'
914+ }
915+ }
916+
917+ expect ( updatedFileVersionSummariesActual ) . toHaveLength ( 2 )
918+ expect ( updatedFileVersionSummariesActual [ 0 ] ) . toEqual ( updatedFileVersionSummaries )
919+ deletePublishedDatasetViaApi ( fileTestDatasetIds . persistentId )
920+ } )
921+
922+ test ( 'should return error when file does not exist' , async ( ) => {
923+ const expectedError = new ReadError ( `[404] File with ID ${ nonExistentFiledId } not found.` )
924+
925+ await expect ( sut . getFileVersionSummaries ( nonExistentFiledId ) ) . rejects . toThrow ( expectedError )
926+ } )
927+ } )
928+
767929 describe ( 'deleteFile' , ( ) => {
768930 let deleFileTestDatasetIds : CreatedDatasetIdentifiers
769931 const testTextFile1Name = 'test-file-1.txt'
0 commit comments