@@ -21,8 +21,12 @@ import {
2121 ROOT_COLLECTION_ALIAS
2222} from '../../testHelpers/collections/collectionHelper'
2323import { CollectionPayload } from '../../../src/collections/infra/repositories/transformers/CollectionPayload'
24- import { uploadFileViaApi } from '../../testHelpers/files/filesHelper'
25- import { deleteUnpublishedDatasetViaApi } from '../../testHelpers/datasets/datasetHelper'
24+ import { updateFileTabularTags , uploadFileViaApi } from '../../testHelpers/files/filesHelper'
25+ import {
26+ deletePublishedDatasetViaApi ,
27+ deleteUnpublishedDatasetViaApi ,
28+ publishDatasetViaApi
29+ } from '../../testHelpers/datasets/datasetHelper'
2630import { PublicationStatus } from '../../../src/core/domain/models/PublicationStatus'
2731import { CollectionType } from '../../../src/collections/domain/models/CollectionType'
2832import {
@@ -41,7 +45,7 @@ describe('CollectionsRepository', () => {
4145 const testCollectionAlias = 'collectionsRepositoryTestCollection'
4246 const sut : CollectionsRepository = new CollectionsRepository ( )
4347 let testCollectionId : number
44-
48+ const currentYear = new Date ( ) . getFullYear ( )
4549 beforeAll ( async ( ) => {
4650 ApiConfig . init (
4751 TestConstants . TEST_API_URL ,
@@ -300,8 +304,7 @@ describe('CollectionsRepository', () => {
300304 const actualCollectionPreview = actual . items [ 2 ] as CollectionPreview
301305
302306 const expectedFileMd5 = '68b22040025784da775f55cfcb6dee2e'
303- const expectedDatasetCitationFragment =
304- 'Admin, Dataverse; Owner, Dataverse, 2025, "Dataset created using the createDataset use case'
307+ const expectedDatasetCitationFragment = `Admin, Dataverse; Owner, Dataverse, ${ currentYear } , "Dataset created using the createDataset use case"`
305308 const expectedDatasetDescription = 'Dataset created using the createDataset use case'
306309 const expectedFileName = 'test-file-1.txt'
307310 const expectedCollectionsName = 'Scientific Research'
@@ -386,6 +389,8 @@ describe('CollectionsRepository', () => {
386389 expect ( actualFilePreview . url ) . not . toBeUndefined ( )
387390 expect ( actualFilePreview . releaseOrCreateDate ) . not . toBeUndefined ( )
388391 expect ( actualFilePreview . type ) . toBe ( CollectionItemType . FILE )
392+ expect ( actualFilePreview . restricted ) . toBe ( false )
393+ expect ( actualFilePreview . canDownloadFile ) . toBe ( true )
389394
390395 expect ( actualDatasetPreview . title ) . toBe ( expectedDatasetDescription )
391396 expect ( actualDatasetPreview . citation ) . toContain ( expectedDatasetCitationFragment )
@@ -666,6 +671,156 @@ describe('CollectionsRepository', () => {
666671 } )
667672 } )
668673
674+ describe ( 'getCollectionItems for published tabular file' , ( ) => {
675+ let testDatasetIds : CreatedDatasetIdentifiers
676+ const testTextFile4Name = 'test-file-4.tab'
677+ const testSubCollectionAlias = 'collectionsRepositoryTestSubCollection'
678+
679+ beforeAll ( async ( ) => {
680+ await sut . publishCollection ( testCollectionId ) . catch ( ( ) => {
681+ throw new Error ( `Tests beforeAll(): Error while publishing collection ${ testCollectionId } ` )
682+ } )
683+
684+ const collectionPayload = await createCollectionViaApi (
685+ testSubCollectionAlias ,
686+ testCollectionAlias
687+ ) . catch ( ( ) => {
688+ throw new Error (
689+ `Tests beforeAll(): Error while creating subcollection ${ testSubCollectionAlias } `
690+ )
691+ } )
692+
693+ await sut . publishCollection ( collectionPayload . id ) . catch ( ( ) => {
694+ throw new Error ( `Tests beforeAll(): Error while publishing collection ${ testCollectionId } ` )
695+ } )
696+
697+ try {
698+ testDatasetIds = await createDataset . execute (
699+ TestConstants . TEST_NEW_DATASET_DTO ,
700+ testSubCollectionAlias
701+ )
702+ } catch ( error ) {
703+ throw new Error ( 'Tests beforeAll(): Error while creating test dataset' )
704+ }
705+ const uploadFileViaApiResult = await uploadFileViaApi (
706+ testDatasetIds . numericId ,
707+ testTextFile4Name ,
708+ {
709+ categories : [ 'tabular data' ]
710+ }
711+ ) . catch ( ( ) => {
712+ throw new Error ( `Tests beforeAll(): Error while uploading file ${ testTextFile4Name } ` )
713+ } )
714+ await new Promise ( ( resolve ) => setTimeout ( resolve , 5000 ) )
715+
716+ await updateFileTabularTags ( uploadFileViaApiResult . data . data . files [ 0 ] . dataFile . id , [
717+ 'Survey' ,
718+ 'Genomics'
719+ ] ) . catch ( ( ) => {
720+ throw new Error (
721+ `Tests beforeAll(): Error while updating file tabular tags ${ uploadFileViaApiResult . data . data . files [ 0 ] . dataFile . id } `
722+ )
723+ } )
724+
725+ await publishDatasetViaApi ( testDatasetIds . numericId ) . catch ( ( ) => {
726+ throw new Error (
727+ `Tests beforeAll(): Error while publishing dataset ${ testDatasetIds . numericId } `
728+ )
729+ } )
730+ } )
731+
732+ afterAll ( async ( ) => {
733+ try {
734+ await deletePublishedDatasetViaApi ( testDatasetIds . persistentId )
735+ } catch ( error ) {
736+ throw new Error (
737+ `Tests afterAll(): Error while deleting test dataset ${ testDatasetIds . persistentId } `
738+ )
739+ }
740+ try {
741+ await deleteCollectionViaApi ( testSubCollectionAlias )
742+ } catch ( error ) {
743+ throw new Error (
744+ `Tests afterAll(): Error while deleting subcollection ${ testSubCollectionAlias } `
745+ )
746+ }
747+ } )
748+
749+ test ( 'should return collection items given a valid collection alias' , async ( ) => {
750+ // Give enough time to Solr for indexing
751+ await new Promise ( ( resolve ) => setTimeout ( resolve , 5000 ) )
752+
753+ const actual = await sut . getCollectionItems ( testCollectionAlias )
754+ const actualFilePreview = actual . items [ 1 ] as FilePreview
755+ const actualDatasetPreview = actual . items [ 0 ] as DatasetPreview
756+ const actualCollectionPreview = actual . items [ 2 ] as CollectionPreview
757+
758+ const expectedFileMd5 = '77c7f03a7d7772907b43f0b322cef723'
759+
760+ const expectedDatasetCitationFragment = `Admin, Dataverse; Owner, Dataverse, ${ currentYear } , "Dataset created using the createDataset use case`
761+ const expectedDatasetDescription = 'Dataset created using the createDataset use case'
762+ const expectedFileName = 'test-file-4.tab'
763+ const expectedCollectionsName = 'Scientific Research'
764+
765+ expect ( actualFilePreview . checksum ?. type ) . toBe ( 'MD5' )
766+ expect ( actualFilePreview . checksum ?. value ) . toBe ( expectedFileMd5 )
767+ expect ( actualFilePreview . datasetCitation ) . toContain ( expectedDatasetCitationFragment )
768+ expect ( actualFilePreview . datasetId ) . toBe ( testDatasetIds . numericId )
769+ expect ( actualFilePreview . datasetName ) . toBe ( expectedDatasetDescription )
770+ expect ( actualFilePreview . datasetPersistentId ) . toBe ( testDatasetIds . persistentId )
771+ expect ( actualFilePreview . description ) . toBe ( '' )
772+ expect ( actualFilePreview . fileContentType ) . toBe ( 'text/tab-separated-values' )
773+ expect ( actualFilePreview . fileId ) . not . toBeUndefined ( )
774+ expect ( actualFilePreview . fileType ) . toBe ( 'Tab-Delimited' )
775+ expect ( actualFilePreview . md5 ) . toBe ( expectedFileMd5 )
776+ expect ( actualFilePreview . name ) . toBe ( expectedFileName )
777+ expect ( actualFilePreview . publicationStatuses [ 0 ] ) . toBe ( PublicationStatus . Published )
778+ expect ( actualFilePreview . sizeInBytes ) . toBe ( 137 )
779+ expect ( actualFilePreview . url ) . not . toBeUndefined ( )
780+ expect ( actualFilePreview . releaseOrCreateDate ) . not . toBeUndefined ( )
781+ expect ( actualFilePreview . type ) . toBe ( CollectionItemType . FILE )
782+ expect ( actualFilePreview . restricted ) . toBe ( false )
783+ expect ( actualFilePreview . canDownloadFile ) . toBe ( true )
784+ expect ( actualFilePreview . categories ) . toEqual ( [ 'tabular data' ] )
785+ expect ( actualFilePreview . tabularTags ) . toEqual ( [ 'Genomics' , 'Survey' ] )
786+ expect ( actualFilePreview . observations ) . toBe ( 10 )
787+ expect ( actualFilePreview . variables ) . toBe ( 3 )
788+
789+ expect ( actualDatasetPreview . title ) . toBe ( expectedDatasetDescription )
790+ expect ( actualDatasetPreview . citation ) . toContain ( expectedDatasetCitationFragment )
791+ expect ( actualDatasetPreview . description ) . toBe ( 'This is the description of the dataset.' )
792+ expect ( actualDatasetPreview . persistentId ) . not . toBeUndefined ( )
793+ expect ( actualDatasetPreview . persistentId ) . not . toBeUndefined ( )
794+ expect ( actualDatasetPreview . publicationStatuses [ 0 ] ) . toBe ( PublicationStatus . Published )
795+ expect ( actualDatasetPreview . versionId ) . not . toBeUndefined ( )
796+ expect ( actualDatasetPreview . versionInfo . createTime ) . not . toBeUndefined ( )
797+ expect ( actualDatasetPreview . versionInfo . lastUpdateTime ) . not . toBeUndefined ( )
798+ expect ( actualDatasetPreview . versionInfo . majorNumber ) . toBe ( 1 )
799+ expect ( actualDatasetPreview . versionInfo . minorNumber ) . toBe ( 0 )
800+ expect ( actualDatasetPreview . versionInfo . state ) . toBe ( 'RELEASED' )
801+ expect ( actualDatasetPreview . parentCollectionAlias ) . toBe (
802+ 'collectionsRepositoryTestSubCollection'
803+ )
804+ expect ( actualDatasetPreview . parentCollectionName ) . toBe ( expectedCollectionsName )
805+ expect ( actualDatasetPreview . type ) . toBe ( CollectionItemType . DATASET )
806+
807+ expect ( actualCollectionPreview . name ) . toBe ( expectedCollectionsName )
808+ expect ( actualCollectionPreview . alias ) . toBe ( testSubCollectionAlias )
809+ expect ( actualCollectionPreview . description ) . toBe ( 'We do all the science.' )
810+ expect ( actualCollectionPreview . imageUrl ) . toBe ( undefined )
811+ expect ( actualCollectionPreview . parentAlias ) . toBe ( testCollectionAlias )
812+ expect ( actualCollectionPreview . parentName ) . toBe ( expectedCollectionsName )
813+ expect ( actualCollectionPreview . publicationStatuses [ 0 ] ) . toBe ( PublicationStatus . Published )
814+ expect ( actualCollectionPreview . releaseOrCreateDate ) . not . toBeUndefined ( )
815+ expect ( actualCollectionPreview . affiliation ) . toBe ( 'Scientific Research University' )
816+ expect ( actualCollectionPreview . parentAlias ) . toBe ( 'collectionsRepositoryTestCollection' )
817+ expect ( actualCollectionPreview . parentName ) . toBe ( expectedCollectionsName )
818+ expect ( actualCollectionPreview . type ) . toBe ( CollectionItemType . COLLECTION )
819+
820+ expect ( actual . totalItemCount ) . toBe ( 3 )
821+ } )
822+ } )
823+
669824 describe ( 'updateCollection' , ( ) => {
670825 const testUpdatedCollectionAlias = 'updateCollection-test-updatedAlias'
671826
0 commit comments