-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #137 from IQSS/feature/133-add-publish-dataset-use…
…-case 133 - Add publish dataset use case
- Loading branch information
Showing
13 changed files
with
380 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
import { UseCase } from '../../../core/domain/useCases/UseCase' | ||
import { VersionUpdateType } from '../models/Dataset' | ||
import { IDatasetsRepository } from '../repositories/IDatasetsRepository' // Assuming Axios for HTTP requests | ||
|
||
export class PublishDataset implements UseCase<void> { | ||
private datasetsRepository: IDatasetsRepository | ||
|
||
constructor(datasetsRepository: IDatasetsRepository) { | ||
this.datasetsRepository = datasetsRepository | ||
} | ||
|
||
/** | ||
* Publishes a dataset, given its identifier and the type of version update type. | ||
* | ||
* @param {number | string} [datasetId] - The dataset identifier, which can be a string (for persistent identifiers), or a number (for numeric identifiers). | ||
* @param {VersionUpdateType} versionUpdateType - Specifies the type of version update, 'major' or 'minor'. | ||
* @returns {Promise<void>} - This method does not return anything upon successful completion. | ||
*/ | ||
async execute(datasetId: number | string, versionUpdateType: VersionUpdateType): Promise<void> { | ||
return await this.datasetsRepository.publishDataset(datasetId, versionUpdateType) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
import { | ||
ApiConfig, | ||
createDataset, | ||
publishDataset, | ||
VersionUpdateType, | ||
WriteError | ||
} from '../../../src' | ||
import { TestConstants } from '../../testHelpers/TestConstants' | ||
import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig' | ||
import { waitForNoLocks } from '../../testHelpers/datasets/datasetHelper' | ||
|
||
const testNewDataset = { | ||
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 successfully publish a dataset', async () => { | ||
const dataset = await createDataset.execute(testNewDataset) | ||
|
||
const response = await publishDataset.execute(dataset.persistentId, VersionUpdateType.MAJOR) | ||
await waitForNoLocks(dataset.numericId, 10) | ||
|
||
expect(response).toBeUndefined() | ||
}) | ||
|
||
test('should throw an error when trying to publish a dataset that does not exist', async () => { | ||
const nonExistentTestDatasetId = 'non-existent-dataset' | ||
const expectedError = new WriteError( | ||
`[404] Dataset with Persistent ID ${nonExistentTestDatasetId} not found.` | ||
) | ||
|
||
await expect( | ||
publishDataset.execute(nonExistentTestDatasetId, VersionUpdateType.MAJOR) | ||
).rejects.toThrow(expectedError) | ||
}) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.