From 23c5595d766a4877eacce54af02447f687497fed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Saracca?= Date: Tue, 25 Feb 2025 19:04:01 -0300 Subject: [PATCH 01/10] chore: rename to DatasetVersionSummaryInfo --- ...DatasetVersionInfo.ts => DatasetVersionSummaryInfo.ts} | 2 +- src/datasets/domain/repositories/IDatasetsRepository.ts | 4 ++-- src/datasets/domain/useCases/GetDatasetVersions.ts | 8 ++++---- src/datasets/infra/repositories/DatasetsRepository.ts | 6 ++++-- test/integration/datasets/DatasetsRepository.test.ts | 2 +- 5 files changed, 12 insertions(+), 10 deletions(-) rename src/datasets/domain/models/{DatasetVersionInfo.ts => DatasetVersionSummaryInfo.ts} (95%) diff --git a/src/datasets/domain/models/DatasetVersionInfo.ts b/src/datasets/domain/models/DatasetVersionSummaryInfo.ts similarity index 95% rename from src/datasets/domain/models/DatasetVersionInfo.ts rename to src/datasets/domain/models/DatasetVersionSummaryInfo.ts index 5501af10..50a110a9 100644 --- a/src/datasets/domain/models/DatasetVersionInfo.ts +++ b/src/datasets/domain/models/DatasetVersionSummaryInfo.ts @@ -1,4 +1,4 @@ -export interface DatasetVersionInfo { +export interface DatasetVersionSummaryInfo { id: number versionNumber: string summary?: DatasetVersionSummary | SummaryStringValues diff --git a/src/datasets/domain/repositories/IDatasetsRepository.ts b/src/datasets/domain/repositories/IDatasetsRepository.ts index 11cd0485..8a577df3 100644 --- a/src/datasets/domain/repositories/IDatasetsRepository.ts +++ b/src/datasets/domain/repositories/IDatasetsRepository.ts @@ -7,7 +7,7 @@ import { DatasetDTO } from '../dtos/DatasetDTO' import { DatasetDeaccessionDTO } from '../dtos/DatasetDeaccessionDTO' import { MetadataBlock } from '../../../metadataBlocks' import { DatasetVersionDiff } from '../models/DatasetVersionDiff' -import { DatasetVersionInfo } from '../models/DatasetVersionInfo' +import { DatasetVersionSummaryInfo } from '../models/DatasetVersionSummaryInfo' export interface IDatasetsRepository { getDataset( @@ -52,5 +52,5 @@ export interface IDatasetsRepository { datasetVersionId: string, deaccessionDTO: DatasetDeaccessionDTO ): Promise - getDatasetVersions(datasetId: number | string): Promise + getDatasetVersions(datasetId: number | string): Promise } diff --git a/src/datasets/domain/useCases/GetDatasetVersions.ts b/src/datasets/domain/useCases/GetDatasetVersions.ts index b2e109cd..dfa97087 100644 --- a/src/datasets/domain/useCases/GetDatasetVersions.ts +++ b/src/datasets/domain/useCases/GetDatasetVersions.ts @@ -1,8 +1,8 @@ import { UseCase } from '../../../core/domain/useCases/UseCase' -import { DatasetVersionInfo } from '../models/DatasetVersionInfo' +import { DatasetVersionSummaryInfo } from '../models/DatasetVersionSummaryInfo' import { IDatasetsRepository } from '../repositories/IDatasetsRepository' -export class GetDatasetVersions implements UseCase { +export class GetDatasetVersions implements UseCase { private datasetsRepository: IDatasetsRepository constructor(datasetsRepository: IDatasetsRepository) { @@ -13,9 +13,9 @@ export class GetDatasetVersions implements UseCase { * Returns a list of versions for a given dataset including a summary of differences between consecutive versions where available. * Draft versions will only be available to users who have permission to view unpublished drafts. * @param {number | string} [datasetId] - The dataset identifier, which can be a string (for persistent identifiers), or a number (for numeric identifiers). - * @returns {Promise} - An array of DatasetVersionInfo. + * @returns {Promise} - An array of DatasetVersionSummaryInfo. */ - async execute(datasetId: number | string): Promise { + async execute(datasetId: number | string): Promise { return await this.datasetsRepository.getDatasetVersions(datasetId) } } diff --git a/src/datasets/infra/repositories/DatasetsRepository.ts b/src/datasets/infra/repositories/DatasetsRepository.ts index affb9709..a9ce2487 100644 --- a/src/datasets/infra/repositories/DatasetsRepository.ts +++ b/src/datasets/infra/repositories/DatasetsRepository.ts @@ -18,7 +18,7 @@ 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' +import { DatasetVersionSummaryInfo } from '../../domain/models/DatasetVersionSummaryInfo' export interface GetAllDatasetPreviewsQueryParams { per_page?: number @@ -237,7 +237,9 @@ export class DatasetsRepository extends ApiRepository implements IDatasetsReposi }) } - public async getDatasetVersions(datasetId: string | number): Promise { + public async getDatasetVersions( + datasetId: string | number + ): Promise { return this.doGet( this.buildApiEndpoint(this.datasetsResourceName, 'versions/compareSummary', datasetId), true diff --git a/test/integration/datasets/DatasetsRepository.test.ts b/test/integration/datasets/DatasetsRepository.test.ts index 9ea95ec4..65bb6386 100644 --- a/test/integration/datasets/DatasetsRepository.test.ts +++ b/test/integration/datasets/DatasetsRepository.test.ts @@ -46,7 +46,7 @@ import { import { DatasetVersionSummary, SummaryStringValues -} from '../../../src/datasets/domain/models/DatasetVersionInfo' +} from '../../../src/datasets/domain/models/DatasetVersionSummaryInfo' import { FilesRepository } from '../../../src/files/infra/repositories/FilesRepository' import { DirectUploadClient } from '../../../src/files/infra/clients/DirectUploadClient' import { createTestFileUploadDestination } from '../../testHelpers/files/fileUploadDestinationHelper' From bfd73c9c6214651cd3e0823d5b02fa673627a895 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Saracca?= Date: Wed, 26 Feb 2025 15:10:02 -0300 Subject: [PATCH 02/10] feat: rename use case + docs --- docs/useCases.md | 29 ++++++++++++++++++- .../repositories/IDatasetsRepository.ts | 2 +- ...ions.ts => GetDatasetVersionsSummaries.ts} | 4 +-- src/datasets/index.ts | 6 ++-- .../infra/repositories/DatasetsRepository.ts | 2 +- .../datasets/DatasetsRepository.test.ts | 14 +++++---- 6 files changed, 43 insertions(+), 14 deletions(-) rename src/datasets/domain/useCases/{GetDatasetVersions.ts => GetDatasetVersionsSummaries.ts} (85%) diff --git a/docs/useCases.md b/docs/useCases.md index c57afb27..74607852 100644 --- a/docs/useCases.md +++ b/docs/useCases.md @@ -33,6 +33,7 @@ The different use cases currently available in the package are classified below, - [Get User Permissions on a Dataset](#get-user-permissions-on-a-dataset) - [Get Differences between Two Dataset Versions](#get-differences-between-two-dataset-versions) - [List All Datasets](#list-all-datasets) + - [Get Dataset Versions Summaries](#get-dataset-versions-summaries) - [Datasets write use cases](#datasets-write-use-cases) - [Create a Dataset](#create-a-dataset) - [Update a Dataset](#update-a-dataset) @@ -576,7 +577,7 @@ const datasetId = 'doi:10.77777/FK2/AAAAAA' const oldVersion = '1.0' const newVersion = '2.0' -lgetDatasetVersionDiff +getDatasetVersionDiff .execute(datasetId, oldVersion, newVersion) .then((versionDiff: DatasetVersionDiff) => { /* ... */ @@ -621,6 +622,32 @@ Note that `collectionId` is an optional parameter to filter datasets by collecti The `DatasetPreviewSubset`returned instance contains a property called `totalDatasetCount` which is necessary for pagination. +#### Get Dataset Versions Summaries + +Returns an array of [DatasetVersionSummaryInfo](../src/datasets/domain/models/DatasetVersionSummaryInfo.ts) that contains information about what changed in every specific version. + +##### Example call: + +```typescript +import { getDatasetVersionsSummaries } from '@iqss/dataverse-client-javascript' + +/* ... */ + +const datasetId = 'doi:10.77777/FK2/AAAAAA' + +getDatasetVersionsSummaries + .execute(datasetId) + .then((datasetVersionsSummaries: DatasetVersionSummaryInfo[]) => { + /* ... */ + }) + +/* ... */ +``` + +_See [use case](../src/datasets/domain/useCases/GetDatasetVersionsSummaries.ts) implementation_. + +The `datasetId` parameter can be a string, for persistent identifiers, or a number, for numeric identifiers. + ### Datasets Write Use Cases #### Create a Dataset diff --git a/src/datasets/domain/repositories/IDatasetsRepository.ts b/src/datasets/domain/repositories/IDatasetsRepository.ts index 8a577df3..a5052dc7 100644 --- a/src/datasets/domain/repositories/IDatasetsRepository.ts +++ b/src/datasets/domain/repositories/IDatasetsRepository.ts @@ -52,5 +52,5 @@ export interface IDatasetsRepository { datasetVersionId: string, deaccessionDTO: DatasetDeaccessionDTO ): Promise - getDatasetVersions(datasetId: number | string): Promise + getDatasetVersionsSummaries(datasetId: number | string): Promise } diff --git a/src/datasets/domain/useCases/GetDatasetVersions.ts b/src/datasets/domain/useCases/GetDatasetVersionsSummaries.ts similarity index 85% rename from src/datasets/domain/useCases/GetDatasetVersions.ts rename to src/datasets/domain/useCases/GetDatasetVersionsSummaries.ts index dfa97087..056637d8 100644 --- a/src/datasets/domain/useCases/GetDatasetVersions.ts +++ b/src/datasets/domain/useCases/GetDatasetVersionsSummaries.ts @@ -2,7 +2,7 @@ import { UseCase } from '../../../core/domain/useCases/UseCase' import { DatasetVersionSummaryInfo } from '../models/DatasetVersionSummaryInfo' import { IDatasetsRepository } from '../repositories/IDatasetsRepository' -export class GetDatasetVersions implements UseCase { +export class GetDatasetVersionsSummaries implements UseCase { private datasetsRepository: IDatasetsRepository constructor(datasetsRepository: IDatasetsRepository) { @@ -16,6 +16,6 @@ export class GetDatasetVersions implements UseCase * @returns {Promise} - An array of DatasetVersionSummaryInfo. */ async execute(datasetId: number | string): Promise { - return await this.datasetsRepository.getDatasetVersions(datasetId) + return await this.datasetsRepository.getDatasetVersionsSummaries(datasetId) } } diff --git a/src/datasets/index.ts b/src/datasets/index.ts index 34aacd2e..f64d59d4 100644 --- a/src/datasets/index.ts +++ b/src/datasets/index.ts @@ -17,7 +17,7 @@ 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' +import { GetDatasetVersionsSummaries } from './domain/useCases/GetDatasetVersionsSummaries' const datasetsRepository = new DatasetsRepository() @@ -49,7 +49,7 @@ const updateDataset = new UpdateDataset( datasetResourceValidator ) const deaccessionDataset = new DeaccessionDataset(datasetsRepository) -const getDatasetVersions = new GetDatasetVersions(datasetsRepository) +const getDatasetVersionsSummaries = new GetDatasetVersionsSummaries(datasetsRepository) export { getDataset, @@ -65,7 +65,7 @@ export { createDataset, updateDataset, deaccessionDataset, - getDatasetVersions + getDatasetVersionsSummaries } export { DatasetNotNumberedVersion } from './domain/models/DatasetNotNumberedVersion' export { DatasetUserPermissions } from './domain/models/DatasetUserPermissions' diff --git a/src/datasets/infra/repositories/DatasetsRepository.ts b/src/datasets/infra/repositories/DatasetsRepository.ts index a9ce2487..4cd6467e 100644 --- a/src/datasets/infra/repositories/DatasetsRepository.ts +++ b/src/datasets/infra/repositories/DatasetsRepository.ts @@ -237,7 +237,7 @@ export class DatasetsRepository extends ApiRepository implements IDatasetsReposi }) } - public async getDatasetVersions( + public async getDatasetVersionsSummaries( datasetId: string | number ): Promise { return this.doGet( diff --git a/test/integration/datasets/DatasetsRepository.test.ts b/test/integration/datasets/DatasetsRepository.test.ts index 65bb6386..7b5ee5bd 100644 --- a/test/integration/datasets/DatasetsRepository.test.ts +++ b/test/integration/datasets/DatasetsRepository.test.ts @@ -945,7 +945,7 @@ describe('DatasetsRepository', () => { }) }) - describe('getDatasetVersions', () => { + describe('getDatasetVersionsSummaries', () => { const testDatasetVersionsCollectionAlias = 'testDatasetVersionsCollection' beforeAll(async () => { @@ -964,7 +964,7 @@ describe('DatasetsRepository', () => { testDatasetVersionsCollectionAlias ) - const actual = await sut.getDatasetVersions(testDatasetIds.numericId) + const actual = await sut.getDatasetVersionsSummaries(testDatasetIds.numericId) expect(actual.length).toBeGreaterThan(0) expect(actual[0].versionNumber).toBe('DRAFT') @@ -982,7 +982,7 @@ describe('DatasetsRepository', () => { await waitForNoLocks(testDatasetIds.numericId, 10) - const actual = await sut.getDatasetVersions(testDatasetIds.numericId) + const actual = await sut.getDatasetVersionsSummaries(testDatasetIds.numericId) expect(actual.length).toBeGreaterThan(0) expect(actual[0].versionNumber).toBe('1.0') @@ -1021,7 +1021,7 @@ describe('DatasetsRepository', () => { [citationMetadataBlock] ) - const actual = await sut.getDatasetVersions(testDatasetIds.numericId) + const actual = await sut.getDatasetVersionsSummaries(testDatasetIds.numericId) expect(actual.length).toEqual(2) @@ -1089,7 +1089,7 @@ describe('DatasetsRepository', () => { uploadedFileDTO ]) - const actual = await sut.getDatasetVersions(testDatasetIds.numericId) + const actual = await sut.getDatasetVersionsSummaries(testDatasetIds.numericId) expect(actual.length).toEqual(2) @@ -1116,7 +1116,9 @@ describe('DatasetsRepository', () => { `[404] Dataset with ID ${nonExistentTestDatasetId} not found.` ) - await expect(sut.getDatasetVersions(nonExistentTestDatasetId)).rejects.toThrow(expectedError) + await expect(sut.getDatasetVersionsSummaries(nonExistentTestDatasetId)).rejects.toThrow( + expectedError + ) }) }) }) From 33ce816553906fb13700edd769880d6ac25304ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Saracca?= Date: Wed, 26 Feb 2025 23:08:00 -0300 Subject: [PATCH 03/10] test: unit cases --- .../datasetVersionsSummariesHelper.ts | 28 ++++++ test/unit/datasets/DatasetsRepository.test.ts | 98 ++++++++++++++++++- .../GetDatasetVersionsSummaries.test.ts | 32 ++++++ 3 files changed, 157 insertions(+), 1 deletion(-) create mode 100644 test/testHelpers/datasets/datasetVersionsSummariesHelper.ts create mode 100644 test/unit/datasets/GetDatasetVersionsSummaries.test.ts diff --git a/test/testHelpers/datasets/datasetVersionsSummariesHelper.ts b/test/testHelpers/datasets/datasetVersionsSummariesHelper.ts new file mode 100644 index 00000000..95f46858 --- /dev/null +++ b/test/testHelpers/datasets/datasetVersionsSummariesHelper.ts @@ -0,0 +1,28 @@ +import { DatasetVersionSummaryInfo } from '../../../src/datasets/domain/models/DatasetVersionSummaryInfo' + +export const createDatasetVersionSummaryModel = ( + props?: Partial +): DatasetVersionSummaryInfo => ({ + id: 1, + contributors: 'John Doe', + versionNumber: 'DRAFT', + publishedOn: '2021-01-01', + summary: { + 'Citation Metadata': { + Title: { + added: 0, + deleted: 0, + changed: 1 + } + }, + files: { + added: 0, + removed: 0, + replaced: 0, + changedFileMetaData: 0, + changedVariableMetadata: 0 + }, + termsAccessChanged: false + }, + ...props +}) diff --git a/test/unit/datasets/DatasetsRepository.test.ts b/test/unit/datasets/DatasetsRepository.test.ts index 85ff2f44..0f60fc65 100644 --- a/test/unit/datasets/DatasetsRepository.test.ts +++ b/test/unit/datasets/DatasetsRepository.test.ts @@ -30,6 +30,7 @@ import { } from '../../testHelpers/datasets/datasetHelper' import { WriteError } from '../../../src' import { VersionUpdateType } from '../../../src/datasets/domain/models/Dataset' +import { createDatasetVersionSummaryModel } from '../../testHelpers/datasets/datasetVersionsSummariesHelper' describe('DatasetsRepository', () => { const sut: DatasetsRepository = new DatasetsRepository() @@ -962,7 +963,7 @@ describe('DatasetsRepository', () => { }) }) - describe('deaccsionDataset', () => { + describe('deaccessionDataset', () => { const version = '1.0' const expectedApiEndpoint = `${TestConstants.TEST_API_URL}/datasets/${testDatasetModel.id}/versions/${version}/deaccession` const expectedApiKeyRequestConfig = { @@ -1014,4 +1015,99 @@ describe('DatasetsRepository', () => { expect(error).toBeInstanceOf(Error) }) }) + + describe('getDatasetVersionSummaries', () => { + const testDatasetVersionSummaries = createDatasetVersionSummaryModel() + + const testDatasetVersionSummariesResponse = { + data: { + status: 'OK', + data: [testDatasetVersionSummaries] + } + } + + describe('by numeric id', () => { + const expectedApiEndpoint = `${TestConstants.TEST_API_URL}/datasets/${testDatasetModel.id}/versions/compareSummary` + + test('should return dataset version summaries when providing id and response is successful', async () => { + jest.spyOn(axios, 'get').mockResolvedValue(testDatasetVersionSummariesResponse) + + // API Key auth + let actual = await sut.getDatasetVersionsSummaries(testDatasetModel.id) + + expect(axios.get).toHaveBeenCalledWith( + expectedApiEndpoint, + TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_API_KEY + ) + expect(actual).toStrictEqual([testDatasetVersionSummaries]) + + // Session cookie auth + ApiConfig.init(TestConstants.TEST_API_URL, DataverseApiAuthMechanism.SESSION_COOKIE) + + actual = await sut.getDatasetVersionsSummaries(testDatasetModel.id) + + expect(axios.get).toHaveBeenCalledWith( + expectedApiEndpoint, + TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_SESSION_COOKIE + ) + expect(actual).toStrictEqual([testDatasetVersionSummaries]) + }) + + test('should return error result on error response', async () => { + jest.spyOn(axios, 'get').mockRejectedValue(TestConstants.TEST_ERROR_RESPONSE) + + let error = undefined as unknown as ReadError + await sut.getDatasetVersionsSummaries(testDatasetModel.id).catch((e) => (error = e)) + + expect(axios.get).toHaveBeenCalledWith( + expectedApiEndpoint, + TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_API_KEY + ) + expect(error).toBeInstanceOf(ReadError) + }) + }) + + describe('by persistent id', () => { + const expectedApiEndpoint = `${TestConstants.TEST_API_URL}/datasets/:persistentId/versions/compareSummary?persistentId=${TestConstants.TEST_DUMMY_PERSISTENT_ID}` + + test('should return dataset version summaries when providing persistent id and response is successful', async () => { + jest.spyOn(axios, 'get').mockResolvedValue(testDatasetVersionSummariesResponse) + + // API Key auth + let actual = await sut.getDatasetVersionsSummaries(TestConstants.TEST_DUMMY_PERSISTENT_ID) + + expect(axios.get).toHaveBeenCalledWith( + expectedApiEndpoint, + TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_API_KEY + ) + expect(actual).toStrictEqual([testDatasetVersionSummaries]) + + // Session cookie auth + ApiConfig.init(TestConstants.TEST_API_URL, DataverseApiAuthMechanism.SESSION_COOKIE) + + actual = await sut.getDatasetVersionsSummaries(TestConstants.TEST_DUMMY_PERSISTENT_ID) + + expect(axios.get).toHaveBeenCalledWith( + expectedApiEndpoint, + TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_SESSION_COOKIE + ) + expect(actual).toStrictEqual([testDatasetVersionSummaries]) + }) + + test('should return error result on error response', async () => { + jest.spyOn(axios, 'get').mockRejectedValue(TestConstants.TEST_ERROR_RESPONSE) + + let error = undefined as unknown as ReadError + await sut + .getDatasetVersionsSummaries(TestConstants.TEST_DUMMY_PERSISTENT_ID) + .catch((e) => (error = e)) + + expect(axios.get).toHaveBeenCalledWith( + expectedApiEndpoint, + TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_API_KEY + ) + expect(error).toBeInstanceOf(ReadError) + }) + }) + }) }) diff --git a/test/unit/datasets/GetDatasetVersionsSummaries.test.ts b/test/unit/datasets/GetDatasetVersionsSummaries.test.ts new file mode 100644 index 00000000..184ec648 --- /dev/null +++ b/test/unit/datasets/GetDatasetVersionsSummaries.test.ts @@ -0,0 +1,32 @@ +import { ReadError } from '../../../src/core/domain/repositories/ReadError' +import { IDatasetsRepository } from '../../../src/datasets/domain/repositories/IDatasetsRepository' +import { createDatasetVersionSummaryModel } from '../../testHelpers/datasets/datasetVersionsSummariesHelper' +import { GetDatasetVersionsSummaries } from '../../../src/datasets/domain/useCases/GetDatasetVersionsSummaries' + +const testDatasetId = 1 + +describe('execute', () => { + test('should return dataset versions summaries on repository success', async () => { + const testDatasetVersionsSummaries = [createDatasetVersionSummaryModel()] + const datasetsRepositoryStub: IDatasetsRepository = {} as IDatasetsRepository + datasetsRepositoryStub.getDatasetVersionsSummaries = jest + .fn() + .mockResolvedValue(testDatasetVersionsSummaries) + const sut = new GetDatasetVersionsSummaries(datasetsRepositoryStub) + + const actual = await sut.execute(testDatasetId) + + expect(actual).toEqual(testDatasetVersionsSummaries) + expect(datasetsRepositoryStub.getDatasetVersionsSummaries).toHaveBeenCalledWith(testDatasetId) + }) + + test('should return error result on repository error', async () => { + const datasetsRepositoryStub: IDatasetsRepository = {} as IDatasetsRepository + datasetsRepositoryStub.getDatasetVersionsSummaries = jest + .fn() + .mockRejectedValue(new ReadError()) + const sut = new GetDatasetVersionsSummaries(datasetsRepositoryStub) + + await expect(sut.execute(testDatasetId)).rejects.toThrow(ReadError) + }) +}) From 8ca12ec7a6a133fd6531ef597f6dbbf9e353373a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Saracca?= Date: Thu, 27 Feb 2025 00:04:11 -0300 Subject: [PATCH 04/10] tests: increase testTimeout for local direct upload tests to pass --- jest.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jest.config.ts b/jest.config.ts index e4844bd8..d7de0942 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -9,7 +9,7 @@ const config: Config = { moduleFileExtensions: ['ts', 'js', 'json', 'node'], coveragePathIgnorePatterns: ['node_modules', 'testHelpers'], globalSetup: '/test/environment/setup.ts', - testTimeout: 25000, + testTimeout: 35000, coverageThreshold: { global: { branches: 90, From fb690f9f357151428f978be09b941bc36caa34ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Saracca?= Date: Thu, 27 Feb 2025 00:04:36 -0300 Subject: [PATCH 05/10] tests: use PR image dataverse version --- test/environment/.env | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/environment/.env b/test/environment/.env index 80e9a14e..29160d68 100644 --- a/test/environment/.env +++ b/test/environment/.env @@ -1,6 +1,6 @@ POSTGRES_VERSION=13 DATAVERSE_DB_USER=dataverse SOLR_VERSION=9.3.0 -DATAVERSE_IMAGE_REGISTRY=docker.io -DATAVERSE_IMAGE_TAG=unstable +DATAVERSE_IMAGE_REGISTRY=ghcr.io +DATAVERSE_IMAGE_TAG=11188-version-difference-summary DATAVERSE_BOOTSTRAP_TIMEOUT=5m From 424e2d50a5abf050593eac3af65a6d8a0badc85a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Saracca?= Date: Thu, 27 Feb 2025 10:19:04 -0300 Subject: [PATCH 06/10] feat: export types and rename some --- .../domain/models/DatasetVersionSummaryInfo.ts | 15 +++++---------- src/datasets/index.ts | 4 ++++ .../datasets/DatasetsRepository.test.ts | 10 +++++----- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/datasets/domain/models/DatasetVersionSummaryInfo.ts b/src/datasets/domain/models/DatasetVersionSummaryInfo.ts index 50a110a9..faee0e57 100644 --- a/src/datasets/domain/models/DatasetVersionSummaryInfo.ts +++ b/src/datasets/domain/models/DatasetVersionSummaryInfo.ts @@ -1,7 +1,7 @@ export interface DatasetVersionSummaryInfo { id: number versionNumber: string - summary?: DatasetVersionSummary | SummaryStringValues + summary?: DatasetVersionSummary | DatasetVersionSummaryStringValues contributors: string publishedOn?: string } @@ -10,17 +10,17 @@ export type DatasetVersionSummary = { [key: string]: SummaryUpdates | SummaryUpdatesWithFields | FilesSummaryUpdates | boolean } -export interface SummaryUpdates { +interface SummaryUpdates { added: number deleted: number changed: number } -export interface SummaryUpdatesWithFields { +interface SummaryUpdatesWithFields { [key: string]: SummaryUpdates } -export interface FilesSummaryUpdates { +interface FilesSummaryUpdates { added: number removed: number replaced: number @@ -28,14 +28,9 @@ export interface FilesSummaryUpdates { changedVariableMetadata: number } -export enum SummaryStringValues { +export enum DatasetVersionSummaryStringValues { firstPublished = 'firstPublished', firstDraft = 'firstDraft', versionDeaccessioned = 'versionDeaccessioned', previousVersionDeaccessioned = 'previousVersionDeaccessioned' } - -export enum SummaryKnownFields { - files = 'files', - termsAccessChanged = 'termsAccessChanged' -} diff --git a/src/datasets/index.ts b/src/datasets/index.ts index f64d59d4..121af2f4 100644 --- a/src/datasets/index.ts +++ b/src/datasets/index.ts @@ -95,3 +95,7 @@ export { export { DatasetDeaccessionDTO } from './domain/dtos/DatasetDeaccessionDTO' export { CreatedDatasetIdentifiers } from './domain/models/CreatedDatasetIdentifiers' export { VersionUpdateType } from './domain/models/Dataset' +export { + DatasetVersionSummaryInfo, + DatasetVersionSummaryStringValues +} from './domain/models/DatasetVersionSummaryInfo' diff --git a/test/integration/datasets/DatasetsRepository.test.ts b/test/integration/datasets/DatasetsRepository.test.ts index 7b5ee5bd..ac5dd694 100644 --- a/test/integration/datasets/DatasetsRepository.test.ts +++ b/test/integration/datasets/DatasetsRepository.test.ts @@ -45,7 +45,7 @@ import { } from '../../testHelpers/files/filesHelper' import { DatasetVersionSummary, - SummaryStringValues + DatasetVersionSummaryStringValues } from '../../../src/datasets/domain/models/DatasetVersionSummaryInfo' import { FilesRepository } from '../../../src/files/infra/repositories/FilesRepository' import { DirectUploadClient } from '../../../src/files/infra/clients/DirectUploadClient' @@ -968,7 +968,7 @@ describe('DatasetsRepository', () => { expect(actual.length).toBeGreaterThan(0) expect(actual[0].versionNumber).toBe('DRAFT') - expect(actual[0].summary).toBe(SummaryStringValues.firstDraft) + expect(actual[0].summary).toBe(DatasetVersionSummaryStringValues.firstDraft) await deleteUnpublishedDatasetViaApi(testDatasetIds.numericId) }) @@ -986,7 +986,7 @@ describe('DatasetsRepository', () => { expect(actual.length).toBeGreaterThan(0) expect(actual[0].versionNumber).toBe('1.0') - expect(actual[0].summary).toBe(SummaryStringValues.firstPublished) + expect(actual[0].summary).toBe(DatasetVersionSummaryStringValues.firstPublished) await deletePublishedDatasetViaApi(testDatasetIds.persistentId) }) @@ -1045,7 +1045,7 @@ describe('DatasetsRepository', () => { }) expect(actual[1].versionNumber).toBe('1.0') - expect(actual[1].summary).toBe(SummaryStringValues.firstPublished) + expect(actual[1].summary).toBe(DatasetVersionSummaryStringValues.firstPublished) await deletePublishedDatasetViaApi(testDatasetIds.persistentId) }) @@ -1106,7 +1106,7 @@ describe('DatasetsRepository', () => { }) expect(actual[1].versionNumber).toBe('1.0') - expect(actual[1].summary).toBe(SummaryStringValues.firstPublished) + expect(actual[1].summary).toBe(DatasetVersionSummaryStringValues.firstPublished) await deletePublishedDatasetViaApi(testDatasetIds.persistentId) }) From 83519d7476d5f2051e40c33fcf84cff33c19d119 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Saracca?= Date: Thu, 27 Feb 2025 10:19:17 -0300 Subject: [PATCH 07/10] chore: update solr version --- test/environment/.env | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/environment/.env b/test/environment/.env index 29160d68..0c691d9b 100644 --- a/test/environment/.env +++ b/test/environment/.env @@ -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 +SOLR_VERSION=9.8.0 +DATAVERSE_IMAGE_REGISTRY=docker.io +DATAVERSE_IMAGE_TAG=unstable DATAVERSE_BOOTSTRAP_TIMEOUT=5m From 772028cba7dfb9b69f4a7abc037ebaa8b86473b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Saracca?= Date: Thu, 27 Feb 2025 10:21:40 -0300 Subject: [PATCH 08/10] chore: use dataverse image tag from PR --- test/environment/.env | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/environment/.env b/test/environment/.env index 0c691d9b..98bf3d7f 100644 --- a/test/environment/.env +++ b/test/environment/.env @@ -1,6 +1,6 @@ POSTGRES_VERSION=13 DATAVERSE_DB_USER=dataverse SOLR_VERSION=9.8.0 -DATAVERSE_IMAGE_REGISTRY=docker.io -DATAVERSE_IMAGE_TAG=unstable +DATAVERSE_IMAGE_REGISTRY=ghcr.io +DATAVERSE_IMAGE_TAG=11188-version-difference-summary DATAVERSE_BOOTSTRAP_TIMEOUT=5m From 3c9d262bdaa62b67bdd6f73f142aab26a6a6dc5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Saracca?= Date: Fri, 28 Feb 2025 09:00:10 -0300 Subject: [PATCH 09/10] chore: update dataverse image registry and tag to use docker.io and unstable --- test/environment/.env | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/environment/.env b/test/environment/.env index 98bf3d7f..0c691d9b 100644 --- a/test/environment/.env +++ b/test/environment/.env @@ -1,6 +1,6 @@ POSTGRES_VERSION=13 DATAVERSE_DB_USER=dataverse SOLR_VERSION=9.8.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 From 3020d48d1a22f2df1de367b7e3dcb42857dffaba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Saracca?= Date: Tue, 4 Mar 2025 09:04:34 -0300 Subject: [PATCH 10/10] pr requested changes --- src/datasets/domain/useCases/GetDatasetVersionsSummaries.ts | 1 + test/integration/datasets/DatasetsRepository.test.ts | 2 -- test/testHelpers/files/filesHelper.ts | 6 +++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/datasets/domain/useCases/GetDatasetVersionsSummaries.ts b/src/datasets/domain/useCases/GetDatasetVersionsSummaries.ts index 056637d8..24458b00 100644 --- a/src/datasets/domain/useCases/GetDatasetVersionsSummaries.ts +++ b/src/datasets/domain/useCases/GetDatasetVersionsSummaries.ts @@ -12,6 +12,7 @@ export class GetDatasetVersionsSummaries implements UseCase} - An array of DatasetVersionSummaryInfo. */ diff --git a/test/integration/datasets/DatasetsRepository.test.ts b/test/integration/datasets/DatasetsRepository.test.ts index ac5dd694..d3e34bde 100644 --- a/test/integration/datasets/DatasetsRepository.test.ts +++ b/test/integration/datasets/DatasetsRepository.test.ts @@ -1024,7 +1024,6 @@ describe('DatasetsRepository', () => { const actual = await sut.getDatasetVersionsSummaries(testDatasetIds.numericId) expect(actual.length).toEqual(2) - expect(actual[0].versionNumber).toBe('DRAFT') expect(actual[0].summary).toMatchObject({ 'Citation Metadata': { @@ -1104,7 +1103,6 @@ describe('DatasetsRepository', () => { }, termsAccessChanged: false }) - expect(actual[1].versionNumber).toBe('1.0') expect(actual[1].summary).toBe(DatasetVersionSummaryStringValues.firstPublished) diff --git a/test/testHelpers/files/filesHelper.ts b/test/testHelpers/files/filesHelper.ts index bdedc302..62a5f890 100644 --- a/test/testHelpers/files/filesHelper.ts +++ b/test/testHelpers/files/filesHelper.ts @@ -1,9 +1,9 @@ import * as crypto from 'crypto' -import { FileModel as FileModel } from '../../../src/files/domain/models/FileModel' -import { File, Blob } from '@web-std/file' import axios, { AxiosResponse } from 'axios' -import { TestConstants } from '../TestConstants' +import { File, Blob } from '@web-std/file' import { readFile } from 'fs/promises' +import { FileModel as FileModel } from '../../../src/files/domain/models/FileModel' +import { TestConstants } from '../TestConstants' import { FilesSubset } from '../../../src/files/domain/models/FilesSubset' import { DvObjectType } from '../../../src/core/domain/models/DvObjectOwnerNode' import { FilePayload } from '../../../src/files/infra/repositories/transformers/FilePayload'