// @ts-nocheck import { expect } from 'chai'; import * as sinon from 'sinon'; import * as proxyquire from 'proxyquire'; const strictProxy = proxyquire.noCallThru(); import { userProfile } from '../../fixtures/user-data'; const key = 'secret'; const url = 'https://example.com/users/fakeId/profile'; const additionalHeaders = { 'Authorization': 'Bearer fakeAuthorisationToken' }; const options = { headers: { 'Content-Type': 'application/json', 'X-api-key': key, 'Authorization': 'Bearer fakeAuthorisationToken' }, method: 'PUT', body: JSON.stringify(userProfile) }; const successMessage = { 'message': 'success' }; const erroredMessage = { 'message': 'invalid' }; describe('Put request', () => { let mockPut; let mockMakeRequest; beforeEach(() => { delete userProfile.password; const sandbox = sinon.createSandbox(); mockMakeRequest = sandbox.stub().callsFake((url, options) => { if (url.includes('fakeId')) { return successMessage; } else { throw erroredMessage; } }); mockPut = strictProxy('../../../src/request/put', { './make-request': { makeRequest: mockMakeRequest }, }).put; }); it('checks makeRequest calls with the correct url string and options object', () => { mockPut({ key, url, body: userProfile, additionalHeaders }); expect(mockMakeRequest.calledWith(url, options)).to.eql(true); }); it('returns with a successful json response', async () => { const request = await mockPut({ key, url, body: userProfile, 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 mockPut({ key, url: badUrl, body: userProfile, additionalHeaders }); } catch (error) { erroredResponse = error; } expect(erroredResponse).to.eql(erroredMessage); }); });