Skip to content

Commit 8b224a4

Browse files
authored
Merge pull request #31 from joenio/dataset-delete
added `deleteDataset($datasetId)` to destroy datasets
2 parents b3184db + e52fa6e commit 8b224a4

3 files changed

Lines changed: 29 additions & 1 deletion

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ http://demo.dataverse.org/api/datasets/389608/versions/1
6161

6262
`public async publishDataset(datasetId: string, versionUpgradeType: DatasetVersionUpgradeType = DatasetVersionUpgradeType.MAJOR): Promise<AxiosResponse> {`
6363

64+
`public async deleteDataset(datasetId: string): Promise<AxiosResponse> {`
65+
6466
## Build project
6567

6668
In order to build the project, we need to run the following command:

src/dataverseClient.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,11 @@ export class DataverseClient {
173173
return this.postRequest(url, '')
174174
}
175175

176+
public async deleteDataset(datasetId: string): Promise<AxiosResponse> {
177+
const url = `${this.host}/api/datasets/:persistentId/destroy/?persistentId=${datasetId}`
178+
return this.deleteRequest(url)
179+
}
180+
176181
private async getRequest(url: string, options: { params?: object, headers?: DataverseHeaders, responseType?: ResponseType } = { headers: this.getHeaders() }): Promise<AxiosResponse> {
177182
return await axios.get(url, options).catch(error => {
178183
throw new DataverseException(error.response.status, error.response.data ? error.response.data.message : '')
@@ -185,6 +190,12 @@ export class DataverseClient {
185190
})
186191
}
187192

193+
private async deleteRequest(url: string, options: { params?: object, headers?: DataverseHeaders, responseType?: ResponseType } = { headers: this.getHeaders() }): Promise<AxiosResponse> {
194+
return await axios.delete(url, options).catch(error => {
195+
throw new DataverseException(error.response.status, error.response.data ? error.response.data.message : '')
196+
})
197+
}
198+
188199
private getHeaders(): DataverseHeaders {
189200
return {
190201
'X-Dataverse-key': this.apiToken ? this.apiToken : ''

test/dataverseClient.spec.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ describe('DataverseClient', () => {
2828
let axiosGetStub: SinonStub
2929
let axiosPostStub: SinonStub
3030
let requestPostStub: SinonStub
31+
let axiosDeleteStub: SinonStub
3132

3233
let mapBasicDatasetInformationStub: SinonStub
3334
let getErrorMessageStub: SinonStub
@@ -63,6 +64,7 @@ describe('DataverseClient', () => {
6364
axiosGetStub = sandbox.stub(axios, 'get').resolves(mockResponse)
6465
axiosPostStub = sandbox.stub(axios, 'post').resolves(mockResponse)
6566
requestPostStub = sandbox.stub(request, 'post').resolves(mockResponse)
67+
axiosDeleteStub = sandbox.stub(axios, 'delete').resolves(mockResponse)
6668

6769
mapBasicDatasetInformationStub = sandbox.stub(DatasetUtil, 'mapBasicDatasetInformation').returns(mockDatasetInformation)
6870
getErrorMessageStub = sandbox.stub(ResponseUtil, 'getErrorMessage').returns(mockErrorMessage)
@@ -1480,5 +1482,18 @@ describe('DataverseClient', () => {
14801482
expect(error.errorCode).to.be.equal(errorCode)
14811483
})
14821484
})
1485+
14831486
})
1484-
})
1487+
1488+
describe('deleteDataset()', () => {
1489+
it('should call axios with expected url', async () => {
1490+
const datasetId: string = random.number().toString()
1491+
1492+
await client.deleteDataset(datasetId)
1493+
1494+
assert.calledOnce(axiosDeleteStub)
1495+
assert.calledWithExactly(axiosDeleteStub, `${host}/api/datasets/:persistentId/destroy/?persistentId=${datasetId}`, { headers: { 'X-Dataverse-key': apiToken } })
1496+
})
1497+
})
1498+
1499+
})

0 commit comments

Comments
 (0)