diff --git a/CHANGELOG.md b/CHANGELOG.md index 05d914f..b3ec693 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Added +- `deleteObjects` method ## [1.2.1] - 2019-12-16 ### Fixed diff --git a/README.md b/README.md index 3c2230c..ccca314 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ The possible methods are: * `putObject` * `headObject` * `deleteObject` +* `deleteObjects` * `listObjects` * `listBuckets` * `createBucket` diff --git a/lib/s3.js b/lib/s3.js index db085d3..a50c8f4 100644 --- a/lib/s3.js +++ b/lib/s3.js @@ -6,6 +6,7 @@ module.exports = { getObject: params => s3Wrapper.getObject(params).promise(), putObject: params => s3Wrapper.putObject(params).promise(), deleteObject: params => s3Wrapper.deleteObject(params).promise(), + deleteObjects: params => s3Wrapper.deleteObjects(params).promise(), listObjects: params => s3Wrapper.listObjects(params).promise(), listBuckets: params => s3Wrapper.listBuckets(params).promise(), createBucket: params => s3Wrapper.createBucket(params).promise(), diff --git a/tests/s3-test.js b/tests/s3-test.js index 5e0b9ba..a4ef16d 100644 --- a/tests/s3-test.js +++ b/tests/s3-test.js @@ -118,6 +118,39 @@ describe('S3', () => { }); }); + context('deleteObjects', () => { + + it('Should return a the same response when calling to deleteObjects method', async () => { + + sinon.stub(s3Wrapper, 'deleteObjects').returns({ promise: () => Promise.resolve(s3Params) }); + + const deleteObjectsInstance = await S3.deleteObjects(s3Params); + + assert.deepStrictEqual(deleteObjectsInstance, s3Params); + }); + + it('Should rejects the promise calling to deleteObjects method', async () => { + + const message = 'random message error'; + + sinon.stub(s3Wrapper, 'deleteObjects').returns({ promise: () => Promise.reject(new Error(message)) }); + + assert.rejects(S3.deleteObjects(s3Params), { + name: 'Error', + message + }); + }); + + it('Should call with the same params to deleteObjects method', async () => { + + sinon.stub(s3Wrapper, 'deleteObjects').returns({ promise: () => Promise.resolve(s3Params) }); + + await S3.deleteObjects(s3Params); + + sinon.assert.calledWithExactly(s3Wrapper.deleteObjects, s3Params); + }); + }); + context('listObjects', () => { it('Should return a the same response when calling to listObjects method', async () => {