Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 0 additions & 41 deletions src/datasets/domain/models/DatasetVersionInfo.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/datasets/domain/repositories/IDatasetsRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import { DatasetDTO } from '../dtos/DatasetDTO'
import { DatasetDeaccessionDTO } from '../dtos/DatasetDeaccessionDTO'
import { MetadataBlock } from '../../../metadataBlocks'
import { DatasetVersionDiff } from '../models/DatasetVersionDiff'
import { DatasetVersionInfo } from '../models/DatasetVersionInfo'

export interface IDatasetsRepository {
getDataset(
Expand Down Expand Up @@ -52,5 +51,4 @@ export interface IDatasetsRepository {
datasetVersionId: string,
deaccessionDTO: DatasetDeaccessionDTO
): Promise<void>
getDatasetVersions(datasetId: number | string): Promise<DatasetVersionInfo[]>
}
21 changes: 0 additions & 21 deletions src/datasets/domain/useCases/GetDatasetVersions.ts

This file was deleted.

5 changes: 1 addition & 4 deletions src/datasets/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import { PublishDataset } from './domain/useCases/PublishDataset'
import { UpdateDataset } from './domain/useCases/UpdateDataset'
import { GetDatasetVersionDiff } from './domain/useCases/GetDatasetVersionDiff'
import { DeaccessionDataset } from './domain/useCases/DeaccessionDataset'
import { GetDatasetVersions } from './domain/useCases/GetDatasetVersions'

const datasetsRepository = new DatasetsRepository()

Expand Down Expand Up @@ -49,7 +48,6 @@ const updateDataset = new UpdateDataset(
datasetResourceValidator
)
const deaccessionDataset = new DeaccessionDataset(datasetsRepository)
const getDatasetVersions = new GetDatasetVersions(datasetsRepository)

export {
getDataset,
Expand All @@ -64,8 +62,7 @@ export {
publishDataset,
createDataset,
updateDataset,
deaccessionDataset,
getDatasetVersions
deaccessionDataset
}
export { DatasetNotNumberedVersion } from './domain/models/DatasetNotNumberedVersion'
export { DatasetUserPermissions } from './domain/models/DatasetUserPermissions'
Expand Down
12 changes: 0 additions & 12 deletions src/datasets/infra/repositories/DatasetsRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import { transformDatasetLocksResponseToDatasetLocks } from './transformers/data
import { transformDatasetPreviewsResponseToDatasetPreviewSubset } from './transformers/datasetPreviewsTransformers'
import { DatasetVersionDiff } from '../../domain/models/DatasetVersionDiff'
import { transformDatasetVersionDiffResponseToDatasetVersionDiff } from './transformers/datasetVersionDiffTransformers'
import { DatasetVersionInfo } from '../../domain/models/DatasetVersionInfo'

export interface GetAllDatasetPreviewsQueryParams {
per_page?: number
Expand Down Expand Up @@ -236,15 +235,4 @@ export class DatasetsRepository extends ApiRepository implements IDatasetsReposi
throw error
})
}

public async getDatasetVersions(datasetId: string | number): Promise<DatasetVersionInfo[]> {
return this.doGet(
this.buildApiEndpoint(this.datasetsResourceName, 'versions/compareSummary', datasetId),
true
)
.then((response) => response.data.data)
.catch((error) => {
throw error
})
}
}
4 changes: 2 additions & 2 deletions test/environment/.env
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
POSTGRES_VERSION=13
DATAVERSE_DB_USER=dataverse
SOLR_VERSION=9.3.0
DATAVERSE_IMAGE_REGISTRY=ghcr.io
DATAVERSE_IMAGE_TAG=11188-version-difference-summary
DATAVERSE_IMAGE_REGISTRY=docker.io
DATAVERSE_IMAGE_TAG=unstable
DATAVERSE_BOOTSTRAP_TIMEOUT=5m
202 changes: 4 additions & 198 deletions test/integration/datasets/DatasetsRepository.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ import {
deleteUnpublishedDatasetViaApi,
waitForDatasetsIndexedInSolr,
deletePublishedDatasetViaApi,
deaccessionDatasetViaApi,
createDatasetLicenseModel
deaccessionDatasetViaApi
} from '../../testHelpers/datasets/datasetHelper'
import { ReadError } from '../../../src/core/domain/repositories/ReadError'
import {
Expand All @@ -19,8 +18,7 @@ import {
createDataset,
CreatedDatasetIdentifiers,
DatasetDTO,
DatasetDeaccessionDTO,
publishDataset
DatasetDeaccessionDTO
} from '../../../src/datasets'
import { ApiConfig, WriteError } from '../../../src'
import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig'
Expand All @@ -33,23 +31,9 @@ import {
import {
createCollectionViaApi,
deleteCollectionViaApi,
publishCollectionViaApi,
ROOT_COLLECTION_ALIAS,
setStorageDriverViaApi
ROOT_COLLECTION_ALIAS
} from '../../testHelpers/collections/collectionHelper'
import {
calculateBlobChecksum,
createSinglepartFileBlob,
testTextFile1Name,
uploadFileViaApi
} from '../../testHelpers/files/filesHelper'
import {
DatasetVersionSummary,
SummaryStringValues
} from '../../../src/datasets/domain/models/DatasetVersionInfo'
import { FilesRepository } from '../../../src/files/infra/repositories/FilesRepository'
import { DirectUploadClient } from '../../../src/files/infra/clients/DirectUploadClient'
import { createTestFileUploadDestination } from '../../testHelpers/files/fileUploadDestinationHelper'
import { testTextFile1Name, uploadFileViaApi } from '../../testHelpers/files/filesHelper'

const TEST_DIFF_DATASET_DTO: DatasetDTO = {
license: {
Expand Down Expand Up @@ -95,9 +79,6 @@ describe('DatasetsRepository', () => {
const sut: DatasetsRepository = new DatasetsRepository()
const nonExistentTestDatasetId = 100

const filesRepositorySut = new FilesRepository()
const directUploadSut: DirectUploadClient = new DirectUploadClient(filesRepositorySut)

beforeAll(async () => {
ApiConfig.init(
TestConstants.TEST_API_URL,
Expand Down Expand Up @@ -944,179 +925,4 @@ describe('DatasetsRepository', () => {
).rejects.toBeInstanceOf(WriteError)
})
})

describe('getDatasetVersions', () => {
const testDatasetVersionsCollectionAlias = 'testDatasetVersionsCollection'

beforeAll(async () => {
await createCollectionViaApi(testDatasetVersionsCollectionAlias)
await publishCollectionViaApi(testDatasetVersionsCollectionAlias)
await setStorageDriverViaApi(testDatasetVersionsCollectionAlias, 'LocalStack')
})

afterAll(async () => {
await deleteCollectionViaApi(testDatasetVersionsCollectionAlias)
})

test('should return dataset versions when dataset exists', async () => {
const testDatasetIds = await createDataset.execute(
TestConstants.TEST_NEW_DATASET_DTO,
testDatasetVersionsCollectionAlias
)

const actual = await sut.getDatasetVersions(testDatasetIds.numericId)

expect(actual.length).toBeGreaterThan(0)
expect(actual[0].versionNumber).toBe('DRAFT')
expect(actual[0].summary).toBe(SummaryStringValues.firstDraft)

await deleteUnpublishedDatasetViaApi(testDatasetIds.numericId)
})

test('should return dataset versions correctly after first publish', async () => {
const testDatasetIds = await createDataset.execute(
TestConstants.TEST_NEW_DATASET_DTO,
testDatasetVersionsCollectionAlias
)
await publishDataset.execute(testDatasetIds.numericId, VersionUpdateType.MAJOR)

await waitForNoLocks(testDatasetIds.numericId, 10)

const actual = await sut.getDatasetVersions(testDatasetIds.numericId)

expect(actual.length).toBeGreaterThan(0)
expect(actual[0].versionNumber).toBe('1.0')
expect(actual[0].summary).toBe(SummaryStringValues.firstPublished)

await deletePublishedDatasetViaApi(testDatasetIds.persistentId)
})

test('should return dataset versions correctly after 1st publish and metadata fields update', async () => {
const testDatasetIds = await createDataset.execute(
TestConstants.TEST_NEW_DATASET_DTO,
testDatasetVersionsCollectionAlias
)
await publishDataset.execute(testDatasetIds.numericId, VersionUpdateType.MAJOR)

await waitForNoLocks(testDatasetIds.numericId, 10)

const metadataBlocksRepository = new MetadataBlocksRepository()
const citationMetadataBlock = await metadataBlocksRepository.getMetadataBlockByName(
'citation'
)

await sut.updateDataset(
testDatasetIds.numericId,
{
license: createDatasetLicenseModel(true),
metadataBlockValues: [
{
name: 'citation',
fields: {
title: 'Updated Dataset Title'
}
}
]
},
[citationMetadataBlock]
)

const actual = await sut.getDatasetVersions(testDatasetIds.numericId)

expect(actual.length).toEqual(2)

expect(actual[0].versionNumber).toBe('DRAFT')
expect(actual[0].summary).toMatchObject<DatasetVersionSummary>({
'Citation Metadata': {
Title: {
added: 0,
deleted: 0,
changed: 1
}
},
files: {
added: 0,
removed: 0,
replaced: 0,
changedFileMetaData: 0,
changedVariableMetadata: 0
},
termsAccessChanged: false
})

expect(actual[1].versionNumber).toBe('1.0')
expect(actual[1].summary).toBe(SummaryStringValues.firstPublished)

await deletePublishedDatasetViaApi(testDatasetIds.persistentId)
})

test('should return correct files summary', async () => {
const testDatasetIds = await createDataset.execute(
TestConstants.TEST_NEW_DATASET_DTO,
testDatasetVersionsCollectionAlias
)
await publishDataset.execute(testDatasetIds.numericId, VersionUpdateType.MAJOR)

await waitForNoLocks(testDatasetIds.numericId, 10)

const singlepartFile = await createSinglepartFileBlob()

const destination = await createTestFileUploadDestination(
singlepartFile,
testDatasetIds.numericId
)

const actualStorageId = await directUploadSut.uploadFile(
testDatasetIds.numericId,
singlepartFile,
jest.fn(),
new AbortController(),
destination
)

const fileArrayBuffer = await singlepartFile.arrayBuffer()
const fileBuffer = Buffer.from(fileArrayBuffer)

const uploadedFileDTO = {
fileName: singlepartFile.name,
storageId: actualStorageId,
checksumType: 'md5',
checksumValue: calculateBlobChecksum(fileBuffer, 'md5'),
mimeType: singlepartFile.type
}

await filesRepositorySut.addUploadedFilesToDataset(testDatasetIds.numericId, [
uploadedFileDTO
])

const actual = await sut.getDatasetVersions(testDatasetIds.numericId)

expect(actual.length).toEqual(2)

expect(actual[0].versionNumber).toBe('DRAFT')
expect(actual[0].summary).toMatchObject<DatasetVersionSummary>({
files: {
added: 1,
removed: 0,
replaced: 0,
changedFileMetaData: 0,
changedVariableMetadata: 0
},
termsAccessChanged: false
})

expect(actual[1].versionNumber).toBe('1.0')
expect(actual[1].summary).toBe(SummaryStringValues.firstPublished)

await deletePublishedDatasetViaApi(testDatasetIds.persistentId)
})

test('should return error when dataset does not exist', async () => {
const expectedError = new ReadError(
`[404] Dataset with ID ${nonExistentTestDatasetId} not found.`
)

await expect(sut.getDatasetVersions(nonExistentTestDatasetId)).rejects.toThrow(expectedError)
})
})
})
Loading