From 1b9b8261c60903674a586fa6e2955485d5d3f810 Mon Sep 17 00:00:00 2001 From: Cheng Shi Date: Fri, 11 Apr 2025 15:22:03 -0400 Subject: [PATCH 1/5] feat: update delete dataset --- docs/useCases.md | 23 +++++ .../repositories/IDatasetsRepository.ts | 1 + src/datasets/domain/useCases/DeleteDataset.ts | 19 ++++ src/datasets/index.ts | 5 +- .../infra/repositories/DatasetsRepository.ts | 8 ++ .../functional/datasets/DeleteDataset.test.ts | 87 +++++++++++++++++++ .../datasets/DatasetsRepository.test.ts | 48 ++++++++++ test/unit/datasets/DeleteDataset.test.ts | 23 +++++ 8 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 src/datasets/domain/useCases/DeleteDataset.ts create mode 100644 test/functional/datasets/DeleteDataset.test.ts create mode 100644 test/unit/datasets/DeleteDataset.test.ts diff --git a/docs/useCases.md b/docs/useCases.md index f255c84e..7c806c14 100644 --- a/docs/useCases.md +++ b/docs/useCases.md @@ -39,6 +39,7 @@ The different use cases currently available in the package are classified below, - [Update a Dataset](#update-a-dataset) - [Publish a Dataset](#publish-a-dataset) - [Deaccession a Dataset](#deaccession-a-dataset) + - [Delete a Dataset](#delete-a-dataset) - [Files](#Files) - [Files read use cases](#files-read-use-cases) - [Get a File](#get-a-file) @@ -837,6 +838,28 @@ The `version` parameter should be a string or a [DatasetNotNumberedVersion](../s You cannot deaccession a dataset more than once. If you call this endpoint twice for the same dataset version, you will get a not found error on the second call, since the dataset you are looking for will no longer be published since it is already deaccessioned. +#### Delete a Dataset + +Delete a Dataset, given its identifier. + +##### Example call: + +```typescript +import { deleteDataset } from '@iqss/dataverse-client-javascript' + +/* ... */ + +const datasetId = 1 + +deletedataset.execute(datasetId) + +/* ... */ +``` + +_See [use case](../src/datasets/domain/useCases/DeleteDataset.ts) implementation_. + +The `datasetId` parameter is a number for numeric identifiers or string for persistent identifiers. + #### Get Download Count of a Dataset Total number of downloads requested for a dataset, given a dataset numeric identifier, diff --git a/src/datasets/domain/repositories/IDatasetsRepository.ts b/src/datasets/domain/repositories/IDatasetsRepository.ts index 4b00ee4b..6d432daf 100644 --- a/src/datasets/domain/repositories/IDatasetsRepository.ts +++ b/src/datasets/domain/repositories/IDatasetsRepository.ts @@ -60,4 +60,5 @@ export interface IDatasetsRepository { includeMDC?: boolean ): Promise getDatasetVersionsSummaries(datasetId: number | string): Promise + deleteDataset(datasetId: number | string): Promise } diff --git a/src/datasets/domain/useCases/DeleteDataset.ts b/src/datasets/domain/useCases/DeleteDataset.ts new file mode 100644 index 00000000..0f3602b6 --- /dev/null +++ b/src/datasets/domain/useCases/DeleteDataset.ts @@ -0,0 +1,19 @@ +import { UseCase } from '../../../core/domain/useCases/UseCase' +import { IDatasetsRepository } from '../repositories/IDatasetsRepository' + +export class DeleteDataset implements UseCase { + private datasetsRepository: IDatasetsRepository + + constructor(datasetsRepository: IDatasetsRepository) { + this.datasetsRepository = datasetsRepository + } + + /** + * Delete a Dataset + * + * @param {number | string} [datasetId] - The dataset identifier, which can be a string (for persistent identifiers), or a number (for numeric identifiers). + */ + async execute(datasetId: number | string): Promise { + return this.datasetsRepository.deleteDataset(datasetId) + } +} diff --git a/src/datasets/index.ts b/src/datasets/index.ts index bd5592b4..0d535448 100644 --- a/src/datasets/index.ts +++ b/src/datasets/index.ts @@ -19,6 +19,7 @@ import { GetDatasetVersionDiff } from './domain/useCases/GetDatasetVersionDiff' import { DeaccessionDataset } from './domain/useCases/DeaccessionDataset' import { GetDatasetDownloadCount } from './domain/useCases/GetDatasetDownloadCount' import { GetDatasetVersionsSummaries } from './domain/useCases/GetDatasetVersionsSummaries' +import { DeleteDataset } from './domain/useCases/DeleteDataset' const datasetsRepository = new DatasetsRepository() @@ -52,6 +53,7 @@ const updateDataset = new UpdateDataset( const deaccessionDataset = new DeaccessionDataset(datasetsRepository) const getDatasetDownloadCount = new GetDatasetDownloadCount(datasetsRepository) const getDatasetVersionsSummaries = new GetDatasetVersionsSummaries(datasetsRepository) +const deleteDataset = new DeleteDataset(datasetsRepository) export { getDataset, @@ -68,7 +70,8 @@ export { updateDataset, deaccessionDataset, getDatasetDownloadCount, - getDatasetVersionsSummaries + getDatasetVersionsSummaries, + deleteDataset } 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 4c069134..9372e1d6 100644 --- a/src/datasets/infra/repositories/DatasetsRepository.ts +++ b/src/datasets/infra/repositories/DatasetsRepository.ts @@ -277,4 +277,12 @@ export class DatasetsRepository extends ApiRepository implements IDatasetsReposi throw error }) } + + public async deleteDataset(datasetId: string | number): Promise { + return this.doDelete(this.buildApiEndpoint(this.datasetsResourceName, undefined, datasetId)) + .then(() => undefined) + .catch((error) => { + throw error + }) + } } diff --git a/test/functional/datasets/DeleteDataset.test.ts b/test/functional/datasets/DeleteDataset.test.ts new file mode 100644 index 00000000..3743d477 --- /dev/null +++ b/test/functional/datasets/DeleteDataset.test.ts @@ -0,0 +1,87 @@ +import { + createDataset, + publishDataset, + VersionUpdateType, + deleteDataset +} from '../../../src/datasets' +import { ApiConfig, WriteError } from '../../../src' +import { TestConstants } from '../../testHelpers/TestConstants' +import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig' +import { waitForNoLocks } from '../../testHelpers/datasets/datasetHelper' + +const testDataset = { + license: { + name: 'CC0 1.0', + uri: 'http://creativecommons.org/publicdomain/zero/1.0', + iconUri: 'https://licensebuttons.net/p/zero/1.0/88x31.png' + }, + metadataBlockValues: [ + { + name: 'citation', + fields: { + title: 'Dataset created using the createDataset use case', + author: [ + { + authorName: 'Admin, Dataverse', + authorAffiliation: 'Dataverse.org' + }, + { + authorName: 'Owner, Dataverse', + authorAffiliation: 'Dataversedemo.org' + } + ], + datasetContact: [ + { + datasetContactEmail: 'finch@mailinator.com', + datasetContactName: 'Finch, Fiona' + } + ], + dsDescription: [ + { + dsDescriptionValue: 'This is the description of the dataset.' + } + ], + subject: ['Medicine, Health and Life Sciences'] + } + } + ] +} + +describe('execute', () => { + beforeEach(async () => { + ApiConfig.init( + TestConstants.TEST_API_URL, + DataverseApiAuthMechanism.API_KEY, + process.env.TEST_API_KEY + ) + }) + + test('should delete a dataset when it is published successfully', async () => { + const createdDatasetIdentifiers = await createDataset.execute(testDataset) + + const response = await publishDataset.execute( + createdDatasetIdentifiers.persistentId, + VersionUpdateType.MAJOR + ) + + await waitForNoLocks(createdDatasetIdentifiers.numericId, 10) + + expect(response).toBeUndefined() + + const actual = await deleteDataset.execute(createdDatasetIdentifiers.numericId) + + expect(actual).toBeUndefined() + }) + + test('should delete a dataset when it is not published successfully', async () => { + const createdDatasetIdentifiers = await createDataset.execute(testDataset) + + const actual = await deleteDataset.execute(createdDatasetIdentifiers.numericId) + + expect(actual).toBeUndefined() + }) + + test('should throw an error when the dataset id is incorrect', async () => { + await expect(deleteDataset.execute(1111)).rejects.toBeInstanceOf(WriteError) + }) +}) diff --git a/test/integration/datasets/DatasetsRepository.test.ts b/test/integration/datasets/DatasetsRepository.test.ts index bd71503b..7ac92156 100644 --- a/test/integration/datasets/DatasetsRepository.test.ts +++ b/test/integration/datasets/DatasetsRepository.test.ts @@ -1336,4 +1336,52 @@ describe('DatasetsRepository', () => { ) }) }) + + describe('deleteDataset', () => { + test('should delete a draft dataset', async () => { + const testDatasetIds = await createDataset.execute(TestConstants.TEST_NEW_DATASET_DTO) + + await waitForNoLocks(testDatasetIds.numericId, 10) + + const actual = await sut.deleteDataset(testDatasetIds.numericId) + + expect(actual).toBeUndefined() + + const expectedError = new ReadError( + `[404] Dataset with ID ${testDatasetIds.numericId} not found.` + ) + + await expect( + sut.getDataset(testDatasetIds.numericId, DatasetNotNumberedVersion.LATEST, false, false) + ).rejects.toThrow(expectedError) + }) + + test('should delete a published dataset', async () => { + const testDatasetIds = await createDataset.execute(TestConstants.TEST_NEW_DATASET_DTO) + + await publishDatasetViaApi(testDatasetIds.numericId) + + await waitForNoLocks(testDatasetIds.numericId, 10) + + const actual = await sut.deleteDataset(testDatasetIds.numericId) + + expect(actual).toBeUndefined() + + const expectedError = new ReadError( + `[404] Dataset with ID ${testDatasetIds.numericId} not found.` + ) + + await expect( + sut.getDataset(testDatasetIds.numericId, DatasetNotNumberedVersion.LATEST, false, false) + ).rejects.toThrow(expectedError) + }) + + test('should return error when dataset does not exist', async () => { + const expectedError = new WriteError( + `[404] Dataset with ID ${nonExistentTestDatasetId} not found.` + ) + + await expect(sut.deleteDataset(nonExistentTestDatasetId)).rejects.toThrow(expectedError) + }) + }) }) diff --git a/test/unit/datasets/DeleteDataset.test.ts b/test/unit/datasets/DeleteDataset.test.ts new file mode 100644 index 00000000..a8901e12 --- /dev/null +++ b/test/unit/datasets/DeleteDataset.test.ts @@ -0,0 +1,23 @@ +import { DeleteDataset } from '../../../src/datasets/domain/useCases/DeleteDataset' +import { IDatasetsRepository } from '../../../src/datasets/domain/repositories/IDatasetsRepository' +import { WriteError } from '../../../src' + +describe('execute', () => { + test('should return undefined on delete success', async () => { + const datasetsRepositoryStub: IDatasetsRepository = {} as IDatasetsRepository + datasetsRepositoryStub.deleteDataset = jest.fn().mockResolvedValue(undefined) + const sut = new DeleteDataset(datasetsRepositoryStub) + + const actual = await sut.execute(1) + expect(actual).toEqual(undefined) + }) + + test('should return error result on delete error', async () => { + const datasetsRepositoryStub: IDatasetsRepository = {} as IDatasetsRepository + datasetsRepositoryStub.deleteDataset = jest.fn().mockRejectedValue(new WriteError()) + const sut = new DeleteDataset(datasetsRepositoryStub) + + const nonExistentDatasetId = 111 + await expect(sut.execute(nonExistentDatasetId)).rejects.toThrow(WriteError) + }) +}) From de41b3de47214a7c9ebb2f1bccf4c71b3157401f Mon Sep 17 00:00:00 2001 From: Cheng Shi Date: Tue, 15 Apr 2025 18:19:17 -0400 Subject: [PATCH 2/5] feat: update to delete draft dataset --- docs/useCases.md | 4 +-- src/datasets/domain/useCases/DeleteDataset.ts | 2 +- .../infra/repositories/DatasetsRepository.ts | 4 ++- .../functional/datasets/DeleteDataset.test.ts | 27 ++----------------- .../datasets/DatasetsRepository.test.ts | 20 -------------- 5 files changed, 8 insertions(+), 49 deletions(-) diff --git a/docs/useCases.md b/docs/useCases.md index 7c806c14..db6283e3 100644 --- a/docs/useCases.md +++ b/docs/useCases.md @@ -838,9 +838,9 @@ The `version` parameter should be a string or a [DatasetNotNumberedVersion](../s You cannot deaccession a dataset more than once. If you call this endpoint twice for the same dataset version, you will get a not found error on the second call, since the dataset you are looking for will no longer be published since it is already deaccessioned. -#### Delete a Dataset +#### Delete a Draft Dataset -Delete a Dataset, given its identifier. +Delete a Draft Dataset, given its identifier. ##### Example call: diff --git a/src/datasets/domain/useCases/DeleteDataset.ts b/src/datasets/domain/useCases/DeleteDataset.ts index 0f3602b6..8ec09bde 100644 --- a/src/datasets/domain/useCases/DeleteDataset.ts +++ b/src/datasets/domain/useCases/DeleteDataset.ts @@ -9,7 +9,7 @@ export class DeleteDataset implements UseCase { } /** - * Delete a Dataset + * Delete a Draft Dataset * * @param {number | string} [datasetId] - The dataset identifier, which can be a string (for persistent identifiers), or a number (for numeric identifiers). */ diff --git a/src/datasets/infra/repositories/DatasetsRepository.ts b/src/datasets/infra/repositories/DatasetsRepository.ts index 9372e1d6..f82c8adc 100644 --- a/src/datasets/infra/repositories/DatasetsRepository.ts +++ b/src/datasets/infra/repositories/DatasetsRepository.ts @@ -279,7 +279,9 @@ export class DatasetsRepository extends ApiRepository implements IDatasetsReposi } public async deleteDataset(datasetId: string | number): Promise { - return this.doDelete(this.buildApiEndpoint(this.datasetsResourceName, undefined, datasetId)) + return this.doDelete( + this.buildApiEndpoint(this.datasetsResourceName, 'versions/:draft', datasetId) + ) .then(() => undefined) .catch((error) => { throw error diff --git a/test/functional/datasets/DeleteDataset.test.ts b/test/functional/datasets/DeleteDataset.test.ts index 3743d477..2d830a1c 100644 --- a/test/functional/datasets/DeleteDataset.test.ts +++ b/test/functional/datasets/DeleteDataset.test.ts @@ -1,13 +1,7 @@ -import { - createDataset, - publishDataset, - VersionUpdateType, - deleteDataset -} from '../../../src/datasets' +import { createDataset, deleteDataset } from '../../../src/datasets' import { ApiConfig, WriteError } from '../../../src' import { TestConstants } from '../../testHelpers/TestConstants' import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig' -import { waitForNoLocks } from '../../testHelpers/datasets/datasetHelper' const testDataset = { license: { @@ -56,24 +50,7 @@ describe('execute', () => { ) }) - test('should delete a dataset when it is published successfully', async () => { - const createdDatasetIdentifiers = await createDataset.execute(testDataset) - - const response = await publishDataset.execute( - createdDatasetIdentifiers.persistentId, - VersionUpdateType.MAJOR - ) - - await waitForNoLocks(createdDatasetIdentifiers.numericId, 10) - - expect(response).toBeUndefined() - - const actual = await deleteDataset.execute(createdDatasetIdentifiers.numericId) - - expect(actual).toBeUndefined() - }) - - test('should delete a dataset when it is not published successfully', async () => { + test('should delete a dataset when it is draft successfully', async () => { const createdDatasetIdentifiers = await createDataset.execute(testDataset) const actual = await deleteDataset.execute(createdDatasetIdentifiers.numericId) diff --git a/test/integration/datasets/DatasetsRepository.test.ts b/test/integration/datasets/DatasetsRepository.test.ts index 7ac92156..d9a16f49 100644 --- a/test/integration/datasets/DatasetsRepository.test.ts +++ b/test/integration/datasets/DatasetsRepository.test.ts @@ -1356,26 +1356,6 @@ describe('DatasetsRepository', () => { ).rejects.toThrow(expectedError) }) - test('should delete a published dataset', async () => { - const testDatasetIds = await createDataset.execute(TestConstants.TEST_NEW_DATASET_DTO) - - await publishDatasetViaApi(testDatasetIds.numericId) - - await waitForNoLocks(testDatasetIds.numericId, 10) - - const actual = await sut.deleteDataset(testDatasetIds.numericId) - - expect(actual).toBeUndefined() - - const expectedError = new ReadError( - `[404] Dataset with ID ${testDatasetIds.numericId} not found.` - ) - - await expect( - sut.getDataset(testDatasetIds.numericId, DatasetNotNumberedVersion.LATEST, false, false) - ).rejects.toThrow(expectedError) - }) - test('should return error when dataset does not exist', async () => { const expectedError = new WriteError( `[404] Dataset with ID ${nonExistentTestDatasetId} not found.` From b2e20c4f254fb2e64dc9dc178f731e4d8403dbbc Mon Sep 17 00:00:00 2001 From: Cheng Shi Date: Thu, 17 Apr 2025 14:05:12 -0400 Subject: [PATCH 3/5] change delete dataset to datasetDraft --- docs/useCases.md | 10 ++++++---- .../domain/repositories/IDatasetsRepository.ts | 2 +- .../{DeleteDataset.ts => DeleteDatasetDraft.ts} | 4 ++-- src/datasets/infra/repositories/DatasetsRepository.ts | 2 +- ...eleteDataset.test.ts => DeleteDatasetDraft.test.ts} | 6 +++--- test/integration/datasets/DatasetsRepository.test.ts | 6 +++--- ...eleteDataset.test.ts => DeleteDatasetDraft.test.ts} | 10 +++++----- 7 files changed, 21 insertions(+), 19 deletions(-) rename src/datasets/domain/useCases/{DeleteDataset.ts => DeleteDatasetDraft.ts} (82%) rename test/functional/datasets/{DeleteDataset.test.ts => DeleteDatasetDraft.test.ts} (86%) rename test/unit/datasets/{DeleteDataset.test.ts => DeleteDatasetDraft.test.ts} (62%) diff --git a/docs/useCases.md b/docs/useCases.md index db6283e3..d7b7ac2b 100644 --- a/docs/useCases.md +++ b/docs/useCases.md @@ -39,7 +39,7 @@ The different use cases currently available in the package are classified below, - [Update a Dataset](#update-a-dataset) - [Publish a Dataset](#publish-a-dataset) - [Deaccession a Dataset](#deaccession-a-dataset) - - [Delete a Dataset](#delete-a-dataset) + - [Delete a Draft Dataset](#delete-a-draft-dataset) - [Files](#Files) - [Files read use cases](#files-read-use-cases) - [Get a File](#get-a-file) @@ -845,21 +845,23 @@ Delete a Draft Dataset, given its identifier. ##### Example call: ```typescript -import { deleteDataset } from '@iqss/dataverse-client-javascript' +import { deleteDatasetDraft } from '@iqss/dataverse-client-javascript' /* ... */ const datasetId = 1 -deletedataset.execute(datasetId) +deleteDatasetDraft.execute(datasetId) /* ... */ ``` -_See [use case](../src/datasets/domain/useCases/DeleteDataset.ts) implementation_. +_See [use case](../src/datasets/domain/useCases/DeleteDatasetDraft.ts) implementation_. The `datasetId` parameter is a number for numeric identifiers or string for persistent identifiers. +If you try to delete a dataset without draft version, you will get a not found error. + #### Get Download Count of a Dataset Total number of downloads requested for a dataset, given a dataset numeric identifier, diff --git a/src/datasets/domain/repositories/IDatasetsRepository.ts b/src/datasets/domain/repositories/IDatasetsRepository.ts index 6d432daf..66fa4587 100644 --- a/src/datasets/domain/repositories/IDatasetsRepository.ts +++ b/src/datasets/domain/repositories/IDatasetsRepository.ts @@ -60,5 +60,5 @@ export interface IDatasetsRepository { includeMDC?: boolean ): Promise getDatasetVersionsSummaries(datasetId: number | string): Promise - deleteDataset(datasetId: number | string): Promise + deleteDatasetDraft(datasetId: number | string): Promise } diff --git a/src/datasets/domain/useCases/DeleteDataset.ts b/src/datasets/domain/useCases/DeleteDatasetDraft.ts similarity index 82% rename from src/datasets/domain/useCases/DeleteDataset.ts rename to src/datasets/domain/useCases/DeleteDatasetDraft.ts index 8ec09bde..86f66a99 100644 --- a/src/datasets/domain/useCases/DeleteDataset.ts +++ b/src/datasets/domain/useCases/DeleteDatasetDraft.ts @@ -1,7 +1,7 @@ import { UseCase } from '../../../core/domain/useCases/UseCase' import { IDatasetsRepository } from '../repositories/IDatasetsRepository' -export class DeleteDataset implements UseCase { +export class DeleteDatasetDraft implements UseCase { private datasetsRepository: IDatasetsRepository constructor(datasetsRepository: IDatasetsRepository) { @@ -14,6 +14,6 @@ export class DeleteDataset implements UseCase { * @param {number | string} [datasetId] - The dataset identifier, which can be a string (for persistent identifiers), or a number (for numeric identifiers). */ async execute(datasetId: number | string): Promise { - return this.datasetsRepository.deleteDataset(datasetId) + return this.datasetsRepository.deleteDatasetDraft(datasetId) } } diff --git a/src/datasets/infra/repositories/DatasetsRepository.ts b/src/datasets/infra/repositories/DatasetsRepository.ts index f82c8adc..036872d6 100644 --- a/src/datasets/infra/repositories/DatasetsRepository.ts +++ b/src/datasets/infra/repositories/DatasetsRepository.ts @@ -278,7 +278,7 @@ export class DatasetsRepository extends ApiRepository implements IDatasetsReposi }) } - public async deleteDataset(datasetId: string | number): Promise { + public async deleteDatasetDraft(datasetId: string | number): Promise { return this.doDelete( this.buildApiEndpoint(this.datasetsResourceName, 'versions/:draft', datasetId) ) diff --git a/test/functional/datasets/DeleteDataset.test.ts b/test/functional/datasets/DeleteDatasetDraft.test.ts similarity index 86% rename from test/functional/datasets/DeleteDataset.test.ts rename to test/functional/datasets/DeleteDatasetDraft.test.ts index 2d830a1c..70135c80 100644 --- a/test/functional/datasets/DeleteDataset.test.ts +++ b/test/functional/datasets/DeleteDatasetDraft.test.ts @@ -1,4 +1,4 @@ -import { createDataset, deleteDataset } from '../../../src/datasets' +import { createDataset, deleteDatasetDraft } from '../../../src/datasets' import { ApiConfig, WriteError } from '../../../src' import { TestConstants } from '../../testHelpers/TestConstants' import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig' @@ -53,12 +53,12 @@ describe('execute', () => { test('should delete a dataset when it is draft successfully', async () => { const createdDatasetIdentifiers = await createDataset.execute(testDataset) - const actual = await deleteDataset.execute(createdDatasetIdentifiers.numericId) + const actual = await deleteDatasetDraft.execute(createdDatasetIdentifiers.numericId) expect(actual).toBeUndefined() }) test('should throw an error when the dataset id is incorrect', async () => { - await expect(deleteDataset.execute(1111)).rejects.toBeInstanceOf(WriteError) + await expect(deleteDatasetDraft.execute(1111)).rejects.toBeInstanceOf(WriteError) }) }) diff --git a/test/integration/datasets/DatasetsRepository.test.ts b/test/integration/datasets/DatasetsRepository.test.ts index d9a16f49..d497c0a0 100644 --- a/test/integration/datasets/DatasetsRepository.test.ts +++ b/test/integration/datasets/DatasetsRepository.test.ts @@ -1337,13 +1337,13 @@ describe('DatasetsRepository', () => { }) }) - describe('deleteDataset', () => { + describe('deleteDatasetDraft', () => { test('should delete a draft dataset', async () => { const testDatasetIds = await createDataset.execute(TestConstants.TEST_NEW_DATASET_DTO) await waitForNoLocks(testDatasetIds.numericId, 10) - const actual = await sut.deleteDataset(testDatasetIds.numericId) + const actual = await sut.deleteDatasetDraft(testDatasetIds.numericId) expect(actual).toBeUndefined() @@ -1361,7 +1361,7 @@ describe('DatasetsRepository', () => { `[404] Dataset with ID ${nonExistentTestDatasetId} not found.` ) - await expect(sut.deleteDataset(nonExistentTestDatasetId)).rejects.toThrow(expectedError) + await expect(sut.deleteDatasetDraft(nonExistentTestDatasetId)).rejects.toThrow(expectedError) }) }) }) diff --git a/test/unit/datasets/DeleteDataset.test.ts b/test/unit/datasets/DeleteDatasetDraft.test.ts similarity index 62% rename from test/unit/datasets/DeleteDataset.test.ts rename to test/unit/datasets/DeleteDatasetDraft.test.ts index a8901e12..4a3b0f77 100644 --- a/test/unit/datasets/DeleteDataset.test.ts +++ b/test/unit/datasets/DeleteDatasetDraft.test.ts @@ -1,12 +1,12 @@ -import { DeleteDataset } from '../../../src/datasets/domain/useCases/DeleteDataset' +import { DeleteDatasetDraft } from '../../../src/datasets/domain/useCases/DeleteDatasetDraft' import { IDatasetsRepository } from '../../../src/datasets/domain/repositories/IDatasetsRepository' import { WriteError } from '../../../src' describe('execute', () => { test('should return undefined on delete success', async () => { const datasetsRepositoryStub: IDatasetsRepository = {} as IDatasetsRepository - datasetsRepositoryStub.deleteDataset = jest.fn().mockResolvedValue(undefined) - const sut = new DeleteDataset(datasetsRepositoryStub) + datasetsRepositoryStub.deleteDatasetDraft = jest.fn().mockResolvedValue(undefined) + const sut = new DeleteDatasetDraft(datasetsRepositoryStub) const actual = await sut.execute(1) expect(actual).toEqual(undefined) @@ -14,8 +14,8 @@ describe('execute', () => { test('should return error result on delete error', async () => { const datasetsRepositoryStub: IDatasetsRepository = {} as IDatasetsRepository - datasetsRepositoryStub.deleteDataset = jest.fn().mockRejectedValue(new WriteError()) - const sut = new DeleteDataset(datasetsRepositoryStub) + datasetsRepositoryStub.deleteDatasetDraft = jest.fn().mockRejectedValue(new WriteError()) + const sut = new DeleteDatasetDraft(datasetsRepositoryStub) const nonExistentDatasetId = 111 await expect(sut.execute(nonExistentDatasetId)).rejects.toThrow(WriteError) From a1c70ae3bb65c8b6e9813bd4bf3cadff5a14053c Mon Sep 17 00:00:00 2001 From: Cheng Shi Date: Thu, 17 Apr 2025 14:08:14 -0400 Subject: [PATCH 4/5] fix: dataset to datasetdraft --- src/datasets/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/datasets/index.ts b/src/datasets/index.ts index 0d535448..003bba2c 100644 --- a/src/datasets/index.ts +++ b/src/datasets/index.ts @@ -19,7 +19,7 @@ import { GetDatasetVersionDiff } from './domain/useCases/GetDatasetVersionDiff' import { DeaccessionDataset } from './domain/useCases/DeaccessionDataset' import { GetDatasetDownloadCount } from './domain/useCases/GetDatasetDownloadCount' import { GetDatasetVersionsSummaries } from './domain/useCases/GetDatasetVersionsSummaries' -import { DeleteDataset } from './domain/useCases/DeleteDataset' +import { DeleteDatasetDraft } from './domain/useCases/DeleteDatasetDraft' const datasetsRepository = new DatasetsRepository() @@ -53,7 +53,7 @@ const updateDataset = new UpdateDataset( const deaccessionDataset = new DeaccessionDataset(datasetsRepository) const getDatasetDownloadCount = new GetDatasetDownloadCount(datasetsRepository) const getDatasetVersionsSummaries = new GetDatasetVersionsSummaries(datasetsRepository) -const deleteDataset = new DeleteDataset(datasetsRepository) +const deleteDataset = new DeleteDatasetDraft(datasetsRepository) export { getDataset, From 663cc75505eb3d10028629424e498ea3670c0069 Mon Sep 17 00:00:00 2001 From: Cheng Shi Date: Thu, 17 Apr 2025 14:14:57 -0400 Subject: [PATCH 5/5] fix: dataset to datasetdraft --- src/datasets/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/datasets/index.ts b/src/datasets/index.ts index 003bba2c..ba1fe5d5 100644 --- a/src/datasets/index.ts +++ b/src/datasets/index.ts @@ -53,7 +53,7 @@ const updateDataset = new UpdateDataset( const deaccessionDataset = new DeaccessionDataset(datasetsRepository) const getDatasetDownloadCount = new GetDatasetDownloadCount(datasetsRepository) const getDatasetVersionsSummaries = new GetDatasetVersionsSummaries(datasetsRepository) -const deleteDataset = new DeleteDatasetDraft(datasetsRepository) +const deleteDatasetDraft = new DeleteDatasetDraft(datasetsRepository) export { getDataset, @@ -71,7 +71,7 @@ export { deaccessionDataset, getDatasetDownloadCount, getDatasetVersionsSummaries, - deleteDataset + deleteDatasetDraft } export { DatasetNotNumberedVersion } from './domain/models/DatasetNotNumberedVersion' export { DatasetUserPermissions } from './domain/models/DatasetUserPermissions'