// @ts-nocheck import { expect } from 'chai'; import * as sinon from 'sinon'; import * as proxyquire from 'proxyquire'; const strictProxy = proxyquire.noCallThru(); const key = 'secret'; const url = 'https://example.com/post'; const body = {}; const additionalHeaders = { 'Header': 'fake' }; const options = { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-api-key': key, 'Header': 'fake' }, body: '{}' }; const successMessage = { 'message': 'success' }; const erroredMessage = { 'message': 'invalid' }; describe('Post request', () => { let mockPost; let mockMakeRequest; beforeEach(() => { const sandbox = sinon.createSandbox(); mockMakeRequest = sandbox.stub().callsFake((url, options) => { if (url.includes('post')) { return successMessage; } else { throw erroredMessage; } }); mockPost = strictProxy('../../../src/request/post', { './make-request': { makeRequest: mockMakeRequest }, }).post; }); it('checks makeRequest calls with the correct url string and options object', () => { mockPost({ key, url, body, additionalHeaders }); expect(mockMakeRequest.calledWith(url, options)).to.eql(true); }); it('returns with a successful json response', async () => { const request = await mockPost({ key, url, body, additionalHeaders }); expect(request).to.eql(successMessage); }); it('throws a json response when request was not successful', async () => { const badUrl = 'https://example.com/invalidPath'; let erroredResponse; try { await mockPost({ key, url: badUrl, body, additionalHeaders }); } catch (error) { erroredResponse = error; } expect(erroredResponse).to.eql(erroredMessage); }); });