From 724e4bc98e9eabd46bf9a3ab5d5c6ecff6f8afdd Mon Sep 17 00:00:00 2001
From: Cheng Shi <cks5520psu@gmail.com>
Date: Fri, 3 Jan 2025 11:18:06 -0500
Subject: [PATCH 1/5] feat: update the file preview fields

---
 src/files/domain/models/FilePreview.ts                 |  6 ++++++
 .../repositories/transformers/FilePreviewPayload.ts    |  6 ++++++
 .../transformers/filePreviewTransformers.ts            | 10 +++++++++-
 test/testHelpers/files/filePreviewHelper.ts            | 10 ++++++++--
 4 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/src/files/domain/models/FilePreview.ts b/src/files/domain/models/FilePreview.ts
index d57ae801..47fb3455 100644
--- a/src/files/domain/models/FilePreview.ts
+++ b/src/files/domain/models/FilePreview.ts
@@ -21,6 +21,12 @@ export interface FilePreview {
   datasetCitation: string
   publicationStatuses: PublicationStatus[]
   releaseOrCreateDate: Date
+  restricted: boolean
+  canDownloadFile: boolean
+  categories: string[]
+  tabularTags?: string[]
+  variables?: number
+  observations?: number
 }
 
 export interface FilePreviewChecksum {
diff --git a/src/files/infra/repositories/transformers/FilePreviewPayload.ts b/src/files/infra/repositories/transformers/FilePreviewPayload.ts
index 83b20283..b0e8cf0a 100644
--- a/src/files/infra/repositories/transformers/FilePreviewPayload.ts
+++ b/src/files/infra/repositories/transformers/FilePreviewPayload.ts
@@ -19,6 +19,12 @@ export interface FilePreviewPayload {
   dataset_citation: string
   publicationStatuses: string[]
   releaseOrCreateDate: string
+  restricted: boolean
+  canDownloadFile: boolean
+  categories: string[]
+  tabularTags?: string[]
+  variables?: number
+  observations?: number
 }
 
 export interface FilePreviewChecksumPayload {
diff --git a/src/files/infra/repositories/transformers/filePreviewTransformers.ts b/src/files/infra/repositories/transformers/filePreviewTransformers.ts
index 9d54c310..52c80b55 100644
--- a/src/files/infra/repositories/transformers/filePreviewTransformers.ts
+++ b/src/files/infra/repositories/transformers/filePreviewTransformers.ts
@@ -36,6 +36,14 @@ export const transformFilePreviewPayloadToFilePreview = (
     datasetPersistentId: filePreviewPayload.dataset_persistent_id,
     datasetCitation: filePreviewPayload.dataset_citation,
     publicationStatuses: publicationStatuses,
-    releaseOrCreateDate: new Date(filePreviewPayload.releaseOrCreateDate)
+    releaseOrCreateDate: new Date(filePreviewPayload.releaseOrCreateDate),
+    restricted: filePreviewPayload.restricted,
+    canDownloadFile: filePreviewPayload.canDownloadFile,
+    categories: filePreviewPayload.categories,
+    ...(filePreviewPayload.tabularTags && {
+      tabularTags: filePreviewPayload.tabularTags
+    }),
+    ...(filePreviewPayload.variables && { variables: filePreviewPayload.variables }),
+    ...(filePreviewPayload.observations && { observations: filePreviewPayload.observations })
   }
 }
diff --git a/test/testHelpers/files/filePreviewHelper.ts b/test/testHelpers/files/filePreviewHelper.ts
index 02547781..3f23ea2c 100644
--- a/test/testHelpers/files/filePreviewHelper.ts
+++ b/test/testHelpers/files/filePreviewHelper.ts
@@ -25,7 +25,10 @@ export const createFilePreviewModel = (): FilePreview => {
     datasetPersistentId: 'test pid1',
     datasetCitation: 'test citation',
     publicationStatuses: [PublicationStatus.Published],
-    releaseOrCreateDate: new Date('2023-05-15T08:21:01Z')
+    releaseOrCreateDate: new Date('2023-05-15T08:21:01Z'),
+    canDownloadFile: true,
+    restricted: false,
+    categories: []
   }
   return filePreviewModel
 }
@@ -53,6 +56,9 @@ export const createFilePreviewPayload = (): FilePreviewPayload => {
     dataset_persistent_id: 'test pid1',
     dataset_citation: 'test citation',
     publicationStatuses: ['Published'],
-    releaseOrCreateDate: '2023-05-15T08:21:01Z'
+    releaseOrCreateDate: '2023-05-15T08:21:01Z',
+    canDownloadFile: true,
+    restricted: false,
+    categories: []
   }
 }

From f2cd4ebfb1695de8f68d1e38e16e66c073c387e8 Mon Sep 17 00:00:00 2001
From: Cheng Shi <cks5520psu@gmail.com>
Date: Fri, 3 Jan 2025 13:56:57 -0500
Subject: [PATCH 2/5] feat: make categories optional and add testcase

---
 src/files/domain/models/FilePreview.ts                      | 2 +-
 .../infra/repositories/transformers/FilePreviewPayload.ts   | 2 +-
 .../repositories/transformers/filePreviewTransformers.ts    | 2 +-
 test/integration/collections/CollectionsRepository.test.ts  | 4 +++-
 test/testHelpers/files/filePreviewHelper.ts                 | 6 ++----
 5 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/files/domain/models/FilePreview.ts b/src/files/domain/models/FilePreview.ts
index 47fb3455..5179b407 100644
--- a/src/files/domain/models/FilePreview.ts
+++ b/src/files/domain/models/FilePreview.ts
@@ -23,7 +23,7 @@ export interface FilePreview {
   releaseOrCreateDate: Date
   restricted: boolean
   canDownloadFile: boolean
-  categories: string[]
+  categories?: string[]
   tabularTags?: string[]
   variables?: number
   observations?: number
diff --git a/src/files/infra/repositories/transformers/FilePreviewPayload.ts b/src/files/infra/repositories/transformers/FilePreviewPayload.ts
index b0e8cf0a..337c3c65 100644
--- a/src/files/infra/repositories/transformers/FilePreviewPayload.ts
+++ b/src/files/infra/repositories/transformers/FilePreviewPayload.ts
@@ -21,7 +21,7 @@ export interface FilePreviewPayload {
   releaseOrCreateDate: string
   restricted: boolean
   canDownloadFile: boolean
-  categories: string[]
+  categories?: string[]
   tabularTags?: string[]
   variables?: number
   observations?: number
diff --git a/src/files/infra/repositories/transformers/filePreviewTransformers.ts b/src/files/infra/repositories/transformers/filePreviewTransformers.ts
index 52c80b55..0c91ce30 100644
--- a/src/files/infra/repositories/transformers/filePreviewTransformers.ts
+++ b/src/files/infra/repositories/transformers/filePreviewTransformers.ts
@@ -39,7 +39,7 @@ export const transformFilePreviewPayloadToFilePreview = (
     releaseOrCreateDate: new Date(filePreviewPayload.releaseOrCreateDate),
     restricted: filePreviewPayload.restricted,
     canDownloadFile: filePreviewPayload.canDownloadFile,
-    categories: filePreviewPayload.categories,
+    ...(filePreviewPayload.categories && { categories: filePreviewPayload.categories }),
     ...(filePreviewPayload.tabularTags && {
       tabularTags: filePreviewPayload.tabularTags
     }),
diff --git a/test/integration/collections/CollectionsRepository.test.ts b/test/integration/collections/CollectionsRepository.test.ts
index e763e105..a251dd4d 100644
--- a/test/integration/collections/CollectionsRepository.test.ts
+++ b/test/integration/collections/CollectionsRepository.test.ts
@@ -293,7 +293,7 @@ describe('CollectionsRepository', () => {
 
       const expectedFileMd5 = '68b22040025784da775f55cfcb6dee2e'
       const expectedDatasetCitationFragment =
-        'Admin, Dataverse; Owner, Dataverse, 2024, "Dataset created using the createDataset use case'
+        'Admin, Dataverse; Owner, Dataverse, 2025, "Dataset created using the createDataset use case'
       const expectedDatasetDescription = 'Dataset created using the createDataset use case'
       const expectedFileName = 'test-file-1.txt'
       const expectedCollectionsName = 'Scientific Research'
@@ -378,6 +378,8 @@ describe('CollectionsRepository', () => {
       expect(actualFilePreview.url).not.toBeUndefined()
       expect(actualFilePreview.releaseOrCreateDate).not.toBeUndefined()
       expect(actualFilePreview.type).toBe(CollectionItemType.FILE)
+      expect(actualFilePreview.restricted).toBe(false)
+      expect(actualFilePreview.canDownloadFile).toBe(true)
 
       expect(actualDatasetPreview.title).toBe(expectedDatasetDescription)
       expect(actualDatasetPreview.citation).toContain(expectedDatasetCitationFragment)
diff --git a/test/testHelpers/files/filePreviewHelper.ts b/test/testHelpers/files/filePreviewHelper.ts
index 3f23ea2c..10da4a8d 100644
--- a/test/testHelpers/files/filePreviewHelper.ts
+++ b/test/testHelpers/files/filePreviewHelper.ts
@@ -27,8 +27,7 @@ export const createFilePreviewModel = (): FilePreview => {
     publicationStatuses: [PublicationStatus.Published],
     releaseOrCreateDate: new Date('2023-05-15T08:21:01Z'),
     canDownloadFile: true,
-    restricted: false,
-    categories: []
+    restricted: false
   }
   return filePreviewModel
 }
@@ -58,7 +57,6 @@ export const createFilePreviewPayload = (): FilePreviewPayload => {
     publicationStatuses: ['Published'],
     releaseOrCreateDate: '2023-05-15T08:21:01Z',
     canDownloadFile: true,
-    restricted: false,
-    categories: []
+    restricted: false
   }
 }

From 1bde9a36b8fa7e1ee3c7a4ba40be95f233aab0e0 Mon Sep 17 00:00:00 2001
From: Cheng Shi <cks5520psu@gmail.com>
Date: Fri, 3 Jan 2025 15:25:34 -0500
Subject: [PATCH 3/5] feat: dataset image url update

---
 src/datasets/domain/models/DatasetPreview.ts                | 1 +
 .../repositories/transformers/DatasetPreviewPayload.ts      | 1 +
 .../transformers/datasetPreviewsTransformers.ts             | 5 ++++-
 test/integration/collections/CollectionsRepository.test.ts  | 1 +
 test/testHelpers/TestConstants.ts                           | 3 ++-
 test/testHelpers/datasets/datasetPreviewHelper.ts           | 6 ++++--
 6 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/datasets/domain/models/DatasetPreview.ts b/src/datasets/domain/models/DatasetPreview.ts
index 29150f2f..f139ec0d 100644
--- a/src/datasets/domain/models/DatasetPreview.ts
+++ b/src/datasets/domain/models/DatasetPreview.ts
@@ -13,4 +13,5 @@ export interface DatasetPreview {
   publicationStatuses: PublicationStatus[]
   parentCollectionName: string
   parentCollectionAlias: string
+  imageUrl?: string
 }
diff --git a/src/datasets/infra/repositories/transformers/DatasetPreviewPayload.ts b/src/datasets/infra/repositories/transformers/DatasetPreviewPayload.ts
index ae9a7622..42652222 100644
--- a/src/datasets/infra/repositories/transformers/DatasetPreviewPayload.ts
+++ b/src/datasets/infra/repositories/transformers/DatasetPreviewPayload.ts
@@ -14,4 +14,5 @@ export interface DatasetPreviewPayload {
   publicationStatuses: string[]
   identifier_of_dataverse: string
   name_of_dataverse: string
+  image_url?: string
 }
diff --git a/src/datasets/infra/repositories/transformers/datasetPreviewsTransformers.ts b/src/datasets/infra/repositories/transformers/datasetPreviewsTransformers.ts
index e9b61307..2f87ac19 100644
--- a/src/datasets/infra/repositories/transformers/datasetPreviewsTransformers.ts
+++ b/src/datasets/infra/repositories/transformers/datasetPreviewsTransformers.ts
@@ -47,6 +47,9 @@ export const transformDatasetPreviewPayloadToDatasetPreview = (
     description: datasetPreviewPayload.description,
     publicationStatuses: publicationStatuses,
     parentCollectionAlias: datasetPreviewPayload.identifier_of_dataverse,
-    parentCollectionName: datasetPreviewPayload.name_of_dataverse
+    parentCollectionName: datasetPreviewPayload.name_of_dataverse,
+    ...(datasetPreviewPayload.image_url && {
+      imageUrl: datasetPreviewPayload.image_url
+    })
   }
 }
diff --git a/test/integration/collections/CollectionsRepository.test.ts b/test/integration/collections/CollectionsRepository.test.ts
index a251dd4d..f38f1641 100644
--- a/test/integration/collections/CollectionsRepository.test.ts
+++ b/test/integration/collections/CollectionsRepository.test.ts
@@ -399,6 +399,7 @@ describe('CollectionsRepository', () => {
       )
       expect(actualDatasetPreview.parentCollectionName).toBe(expectedCollectionsName)
       expect(actualDatasetPreview.type).toBe(CollectionItemType.DATASET)
+      expect(actualDatasetPreview.imageUrl).toBe('http://dataverse.com')
 
       expect(actualCollectionPreview.name).toBe(expectedCollectionsName)
       expect(actualCollectionPreview.alias).toBe(testSubCollectionAlias)
diff --git a/test/testHelpers/TestConstants.ts b/test/testHelpers/TestConstants.ts
index 4a2adfb8..ab020e7e 100644
--- a/test/testHelpers/TestConstants.ts
+++ b/test/testHelpers/TestConstants.ts
@@ -89,7 +89,8 @@ export class TestConstants {
               dsDescriptionValue: 'This is the description of the dataset.'
             }
           ],
-          subject: ['Medicine, Health and Life Sciences']
+          subject: ['Medicine, Health and Life Sciences'],
+          imageUrl: 'http://dataverse.com'
         }
       }
     ]
diff --git a/test/testHelpers/datasets/datasetPreviewHelper.ts b/test/testHelpers/datasets/datasetPreviewHelper.ts
index 82d09ad0..fb61d792 100644
--- a/test/testHelpers/datasets/datasetPreviewHelper.ts
+++ b/test/testHelpers/datasets/datasetPreviewHelper.ts
@@ -29,7 +29,8 @@ export const createDatasetPreviewModel = (): DatasetPreview => {
     description: 'test',
     publicationStatuses: [PublicationStatus.Draft, PublicationStatus.Unpublished],
     parentCollectionAlias: 'parentCollection',
-    parentCollectionName: 'Parent Collection'
+    parentCollectionName: 'Parent Collection',
+    imageUrl: 'http://dataverse.com'
   }
   return datasetPreviewModel
 }
@@ -50,6 +51,7 @@ export const createDatasetPreviewPayload = (): DatasetPreviewPayload => {
     type: 'dataset',
     publicationStatuses: ['Draft', 'Unpublished'],
     identifier_of_dataverse: 'parentCollection',
-    name_of_dataverse: 'Parent Collection'
+    name_of_dataverse: 'Parent Collection',
+    image_url: 'http://dataverse.com'
   }
 }

From 4321ffdbdfdb41e6b166c166f922e17a7ff91b63 Mon Sep 17 00:00:00 2001
From: Cheng Shi <cks5520psu@gmail.com>
Date: Fri, 3 Jan 2025 15:32:08 -0500
Subject: [PATCH 4/5] fix: dataset image url update

---
 test/integration/collections/CollectionsRepository.test.ts | 1 -
 test/testHelpers/TestConstants.ts                          | 3 +--
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/test/integration/collections/CollectionsRepository.test.ts b/test/integration/collections/CollectionsRepository.test.ts
index f38f1641..a251dd4d 100644
--- a/test/integration/collections/CollectionsRepository.test.ts
+++ b/test/integration/collections/CollectionsRepository.test.ts
@@ -399,7 +399,6 @@ describe('CollectionsRepository', () => {
       )
       expect(actualDatasetPreview.parentCollectionName).toBe(expectedCollectionsName)
       expect(actualDatasetPreview.type).toBe(CollectionItemType.DATASET)
-      expect(actualDatasetPreview.imageUrl).toBe('http://dataverse.com')
 
       expect(actualCollectionPreview.name).toBe(expectedCollectionsName)
       expect(actualCollectionPreview.alias).toBe(testSubCollectionAlias)
diff --git a/test/testHelpers/TestConstants.ts b/test/testHelpers/TestConstants.ts
index ab020e7e..4a2adfb8 100644
--- a/test/testHelpers/TestConstants.ts
+++ b/test/testHelpers/TestConstants.ts
@@ -89,8 +89,7 @@ export class TestConstants {
               dsDescriptionValue: 'This is the description of the dataset.'
             }
           ],
-          subject: ['Medicine, Health and Life Sciences'],
-          imageUrl: 'http://dataverse.com'
+          subject: ['Medicine, Health and Life Sciences']
         }
       }
     ]

From 1826b46378b2aa5e44a789e4f351541d7255d83e Mon Sep 17 00:00:00 2001
From: Cheng Shi <cks5520psu@gmail.com>
Date: Wed, 8 Jan 2025 14:33:12 -0500
Subject: [PATCH 5/5] feat: test case for tabular data

---
 .../collections/CollectionsRepository.test.ts | 163 +++++++++++++++++-
 test/testHelpers/files/filesHelper.ts         |  16 ++
 2 files changed, 174 insertions(+), 5 deletions(-)

diff --git a/test/integration/collections/CollectionsRepository.test.ts b/test/integration/collections/CollectionsRepository.test.ts
index a251dd4d..042b5a26 100644
--- a/test/integration/collections/CollectionsRepository.test.ts
+++ b/test/integration/collections/CollectionsRepository.test.ts
@@ -20,8 +20,12 @@ import {
   ROOT_COLLECTION_ALIAS
 } from '../../testHelpers/collections/collectionHelper'
 import { CollectionPayload } from '../../../src/collections/infra/repositories/transformers/CollectionPayload'
-import { uploadFileViaApi } from '../../testHelpers/files/filesHelper'
-import { deleteUnpublishedDatasetViaApi } from '../../testHelpers/datasets/datasetHelper'
+import { updateFileTabularTags, uploadFileViaApi } from '../../testHelpers/files/filesHelper'
+import {
+  deletePublishedDatasetViaApi,
+  deleteUnpublishedDatasetViaApi,
+  publishDatasetViaApi
+} from '../../testHelpers/datasets/datasetHelper'
 import { PublicationStatus } from '../../../src/core/domain/models/PublicationStatus'
 import { CollectionType } from '../../../src/collections/domain/models/CollectionType'
 import {
@@ -33,7 +37,7 @@ describe('CollectionsRepository', () => {
   const testCollectionAlias = 'collectionsRepositoryTestCollection'
   const sut: CollectionsRepository = new CollectionsRepository()
   let testCollectionId: number
-
+  const currentYear = new Date().getFullYear()
   beforeAll(async () => {
     ApiConfig.init(
       TestConstants.TEST_API_URL,
@@ -292,8 +296,7 @@ describe('CollectionsRepository', () => {
       const actualCollectionPreview = actual.items[2] as CollectionPreview
 
       const expectedFileMd5 = '68b22040025784da775f55cfcb6dee2e'
-      const expectedDatasetCitationFragment =
-        'Admin, Dataverse; Owner, Dataverse, 2025, "Dataset created using the createDataset use case'
+      const expectedDatasetCitationFragment = `Admin, Dataverse; Owner, Dataverse, ${currentYear}, "Dataset created using the createDataset use case"`
       const expectedDatasetDescription = 'Dataset created using the createDataset use case'
       const expectedFileName = 'test-file-1.txt'
       const expectedCollectionsName = 'Scientific Research'
@@ -660,6 +663,156 @@ describe('CollectionsRepository', () => {
     })
   })
 
+  describe('getCollectionItems for published tabular file', () => {
+    let testDatasetIds: CreatedDatasetIdentifiers
+    const testTextFile4Name = 'test-file-4.tab'
+    const testSubCollectionAlias = 'collectionsRepositoryTestSubCollection'
+
+    beforeAll(async () => {
+      await sut.publishCollection(testCollectionId).catch(() => {
+        throw new Error(`Tests beforeAll(): Error while publishing collection ${testCollectionId}`)
+      })
+
+      const collectionPayload = await createCollectionViaApi(
+        testSubCollectionAlias,
+        testCollectionAlias
+      ).catch(() => {
+        throw new Error(
+          `Tests beforeAll(): Error while creating subcollection ${testSubCollectionAlias}`
+        )
+      })
+
+      await sut.publishCollection(collectionPayload.id).catch(() => {
+        throw new Error(`Tests beforeAll(): Error while publishing collection ${testCollectionId}`)
+      })
+
+      try {
+        testDatasetIds = await createDataset.execute(
+          TestConstants.TEST_NEW_DATASET_DTO,
+          testSubCollectionAlias
+        )
+      } catch (error) {
+        throw new Error('Tests beforeAll(): Error while creating test dataset')
+      }
+      const uploadFileViaApiResult = await uploadFileViaApi(
+        testDatasetIds.numericId,
+        testTextFile4Name,
+        {
+          categories: ['tabular data']
+        }
+      ).catch(() => {
+        throw new Error(`Tests beforeAll(): Error while uploading file ${testTextFile4Name}`)
+      })
+      await new Promise((resolve) => setTimeout(resolve, 5000))
+
+      await updateFileTabularTags(uploadFileViaApiResult.data.data.files[0].dataFile.id, [
+        'Survey',
+        'Genomics'
+      ]).catch(() => {
+        throw new Error(
+          `Tests beforeAll(): Error while updating file tabular tags ${uploadFileViaApiResult.data.data.files[0].dataFile.id}`
+        )
+      })
+
+      await publishDatasetViaApi(testDatasetIds.numericId).catch(() => {
+        throw new Error(
+          `Tests beforeAll(): Error while publishing dataset ${testDatasetIds.numericId}`
+        )
+      })
+    })
+
+    afterAll(async () => {
+      try {
+        await deletePublishedDatasetViaApi(testDatasetIds.persistentId)
+      } catch (error) {
+        throw new Error(
+          `Tests afterAll(): Error while deleting test dataset ${testDatasetIds.persistentId}`
+        )
+      }
+      try {
+        await deleteCollectionViaApi(testSubCollectionAlias)
+      } catch (error) {
+        throw new Error(
+          `Tests afterAll(): Error while deleting subcollection ${testSubCollectionAlias}`
+        )
+      }
+    })
+
+    test('should return collection items given a valid collection alias', async () => {
+      // Give enough time to Solr for indexing
+      await new Promise((resolve) => setTimeout(resolve, 5000))
+
+      const actual = await sut.getCollectionItems(testCollectionAlias)
+      const actualFilePreview = actual.items[1] as FilePreview
+      const actualDatasetPreview = actual.items[0] as DatasetPreview
+      const actualCollectionPreview = actual.items[2] as CollectionPreview
+
+      const expectedFileMd5 = '77c7f03a7d7772907b43f0b322cef723'
+
+      const expectedDatasetCitationFragment = `Admin, Dataverse; Owner, Dataverse, ${currentYear}, "Dataset created using the createDataset use case`
+      const expectedDatasetDescription = 'Dataset created using the createDataset use case'
+      const expectedFileName = 'test-file-4.tab'
+      const expectedCollectionsName = 'Scientific Research'
+
+      expect(actualFilePreview.checksum?.type).toBe('MD5')
+      expect(actualFilePreview.checksum?.value).toBe(expectedFileMd5)
+      expect(actualFilePreview.datasetCitation).toContain(expectedDatasetCitationFragment)
+      expect(actualFilePreview.datasetId).toBe(testDatasetIds.numericId)
+      expect(actualFilePreview.datasetName).toBe(expectedDatasetDescription)
+      expect(actualFilePreview.datasetPersistentId).toBe(testDatasetIds.persistentId)
+      expect(actualFilePreview.description).toBe('')
+      expect(actualFilePreview.fileContentType).toBe('text/tab-separated-values')
+      expect(actualFilePreview.fileId).not.toBeUndefined()
+      expect(actualFilePreview.fileType).toBe('Tab-Delimited')
+      expect(actualFilePreview.md5).toBe(expectedFileMd5)
+      expect(actualFilePreview.name).toBe(expectedFileName)
+      expect(actualFilePreview.publicationStatuses[0]).toBe(PublicationStatus.Published)
+      expect(actualFilePreview.sizeInBytes).toBe(137)
+      expect(actualFilePreview.url).not.toBeUndefined()
+      expect(actualFilePreview.releaseOrCreateDate).not.toBeUndefined()
+      expect(actualFilePreview.type).toBe(CollectionItemType.FILE)
+      expect(actualFilePreview.restricted).toBe(false)
+      expect(actualFilePreview.canDownloadFile).toBe(true)
+      expect(actualFilePreview.categories).toEqual(['tabular data'])
+      expect(actualFilePreview.tabularTags).toEqual(['Genomics', 'Survey'])
+      expect(actualFilePreview.observations).toBe(10)
+      expect(actualFilePreview.variables).toBe(3)
+
+      expect(actualDatasetPreview.title).toBe(expectedDatasetDescription)
+      expect(actualDatasetPreview.citation).toContain(expectedDatasetCitationFragment)
+      expect(actualDatasetPreview.description).toBe('This is the description of the dataset.')
+      expect(actualDatasetPreview.persistentId).not.toBeUndefined()
+      expect(actualDatasetPreview.persistentId).not.toBeUndefined()
+      expect(actualDatasetPreview.publicationStatuses[0]).toBe(PublicationStatus.Published)
+      expect(actualDatasetPreview.versionId).not.toBeUndefined()
+      expect(actualDatasetPreview.versionInfo.createTime).not.toBeUndefined()
+      expect(actualDatasetPreview.versionInfo.lastUpdateTime).not.toBeUndefined()
+      expect(actualDatasetPreview.versionInfo.majorNumber).toBe(1)
+      expect(actualDatasetPreview.versionInfo.minorNumber).toBe(0)
+      expect(actualDatasetPreview.versionInfo.state).toBe('RELEASED')
+      expect(actualDatasetPreview.parentCollectionAlias).toBe(
+        'collectionsRepositoryTestSubCollection'
+      )
+      expect(actualDatasetPreview.parentCollectionName).toBe(expectedCollectionsName)
+      expect(actualDatasetPreview.type).toBe(CollectionItemType.DATASET)
+
+      expect(actualCollectionPreview.name).toBe(expectedCollectionsName)
+      expect(actualCollectionPreview.alias).toBe(testSubCollectionAlias)
+      expect(actualCollectionPreview.description).toBe('We do all the science.')
+      expect(actualCollectionPreview.imageUrl).toBe(undefined)
+      expect(actualCollectionPreview.parentAlias).toBe(testCollectionAlias)
+      expect(actualCollectionPreview.parentName).toBe(expectedCollectionsName)
+      expect(actualCollectionPreview.publicationStatuses[0]).toBe(PublicationStatus.Published)
+      expect(actualCollectionPreview.releaseOrCreateDate).not.toBeUndefined()
+      expect(actualCollectionPreview.affiliation).toBe('Scientific Research University')
+      expect(actualCollectionPreview.parentAlias).toBe('collectionsRepositoryTestCollection')
+      expect(actualCollectionPreview.parentName).toBe(expectedCollectionsName)
+      expect(actualCollectionPreview.type).toBe(CollectionItemType.COLLECTION)
+
+      expect(actual.totalItemCount).toBe(3)
+    })
+  })
+
   describe('updateCollection', () => {
     const testUpdatedCollectionAlias = 'updateCollection-test-updatedAlias'
 
diff --git a/test/testHelpers/files/filesHelper.ts b/test/testHelpers/files/filesHelper.ts
index c499fd84..666551bf 100644
--- a/test/testHelpers/files/filesHelper.ts
+++ b/test/testHelpers/files/filesHelper.ts
@@ -211,3 +211,19 @@ async function createBlobWithSize(size: number): Promise<Blob> {
   const arrayBuffer = new ArrayBuffer(size)
   return new Blob([arrayBuffer])
 }
+
+export const updateFileTabularTags = async (
+  fileId: number,
+  tabularTags: string[]
+): Promise<AxiosResponse> => {
+  return await axios.post(
+    `${TestConstants.TEST_API_URL}/files/${fileId}/metadata/tabularTags`,
+    { tabularTags },
+    {
+      headers: {
+        'Content-type': 'application/json',
+        'X-Dataverse-Key': process.env.TEST_API_KEY
+      }
+    }
+  )
+}