diff --git a/docs/api.md b/docs/api.md index a2bb24c78..80bc146e1 100644 --- a/docs/api.md +++ b/docs/api.md @@ -148,6 +148,7 @@ REST helper can send GET/POST/PATCH/etc requests to REST API endpoint: * [`I.sendPutRequest()`](/helpers/REST#sendPutRequest) * [`I.sendPatchRequest()`](/helpers/REST#sendPatchRequest) * [`I.sendDeleteRequest()`](/helpers/REST#sendDeleteRequest) +* [`I.sendDeleteRequestWithPayload()`](/helpers/REST#sendDeleteRequestWithPayload) * ... Authentication headers can be set in [helper's config](https://codecept.io/helpers/REST/#configuration) or per test with headers or special methods like `I.amBearerAuthenticated`. diff --git a/docs/data.md b/docs/data.md index 91d8f4a22..da91d05c6 100644 --- a/docs/data.md +++ b/docs/data.md @@ -54,6 +54,7 @@ I.sendPostRequest() I.sendPutRequest() I.sendPatchRequest() I.sendDeleteRequest() +I.sendDeleteRequestWithPayload() ``` As well as a method for setting headers: `haveRequestHeaders`. diff --git a/docs/helpers/REST.md b/docs/helpers/REST.md index d35e8ff20..d59169253 100644 --- a/docs/helpers/REST.md +++ b/docs/helpers/REST.md @@ -156,6 +156,22 @@ I.sendDeleteRequest('/api/users/1'); Returns **[Promise][2]<any>** response +### sendDeleteRequestWithPayload + +Sends DELETE request to API with payload. + +```js +I.sendDeleteRequestWithPayload('/api/users/1', { author: 'john' }); +``` + +#### Parameters + +- `url` **any** +- `payload` **any** the payload to be sent. By default it is sent as an empty object +- `headers` **[object][4]** the headers object to be sent. By default, it is sent as an empty object + +Returns **[Promise][2]<any>** response + ### sendGetRequest Send GET request to REST API diff --git a/lib/helper/REST.js b/lib/helper/REST.js index 4d36be1d9..aca4f8437 100644 --- a/lib/helper/REST.js +++ b/lib/helper/REST.js @@ -408,6 +408,30 @@ class REST extends Helper { return this._executeRequest(request) } + + /** + * Sends DELETE request to API with payload. + * + * ```js + * I.sendDeleteRequestWithPayload('/api/users/1', { author: 'john' }); + * ``` + * + * @param {*} url + * @param {*} [payload={}] - the payload to be sent. By default it is sent as an empty object + * @param {object} [headers={}] - the headers object to be sent. By default, it is sent as an empty object + * + * @returns {Promise<*>} response + */ + async sendDeleteRequestWithPayload(url, payload = {}, headers = {}) { + const request = { + baseURL: this._url(url), + method: 'DELETE', + data: payload, + headers, + } + + return this._executeRequest(request) + } } module.exports = REST diff --git a/test/rest/REST_test.js b/test/rest/REST_test.js index 7d80acd36..458a5af5e 100644 --- a/test/rest/REST_test.js +++ b/test/rest/REST_test.js @@ -109,6 +109,13 @@ describe('REST', () => { getResponse.data.should.be.empty }) + it('should send DELETE requests with payload', async () => { + await I.sendDeleteRequestWithPayload('/posts/1', { author: 'john' }) + const getResponse = await I.sendGetRequest('/posts') + + getResponse.data.should.be.empty + }) + it('should update request with onRequest', async () => { I.config.onRequest = (request) => (request.data = { name: 'Vasya' }) diff --git a/translations/de-DE.js b/translations/de-DE.js index aee1be9b2..7a84c985d 100644 --- a/translations/de-DE.js +++ b/translations/de-DE.js @@ -68,6 +68,7 @@ module.exports = { sendGetRequest: 'mache_einen_get_request', sendPutRequest: 'mache_einen_put_request', sendDeleteRequest: 'mache_einen_delete_request', + sendDeleteRequestWithPayload: 'mache_einen_delete_request_mit_payload', sendPostRequest: 'mache_einen_post_request', switchTo: 'wechlse_in_iframe', }, diff --git a/translations/fr-FR.js b/translations/fr-FR.js index 6cb6a7a14..de67a063f 100644 --- a/translations/fr-FR.js +++ b/translations/fr-FR.js @@ -70,7 +70,7 @@ module.exports = { scrollTo: 'défileVers', sendGetRequest: 'envoieLaRequêteGet', sendPutRequest: 'envoieLaRequêtePut', - sendDeleteRequest: 'envoieLaRequêteDelete', + sendDeleteRequest: 'envoieLaRequêteDeleteAvecPayload', sendPostRequest: 'envoieLaRequêtePost', }, }