mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-14 22:23:42 +01:00
Merge pull request #3617 from overleaf/ae-fetch-json-data
Rename "responseBody" to "data" in fetchJSON error object GitOrigin-RevId: 75c166b23cbef22e82232f334ef373c66d9612a7
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
import { expect } from 'chai'
|
||||
import fetchMock from 'fetch-mock'
|
||||
import OError from '@overleaf/o-error'
|
||||
import {
|
||||
deleteJSON,
|
||||
getJSON,
|
||||
postJSON,
|
||||
putJSON
|
||||
} from '../../../frontend/js/infrastructure/fetch-json'
|
||||
|
||||
describe('fetchJSON', function() {
|
||||
before(function() {
|
||||
fetchMock.restore()
|
||||
})
|
||||
|
||||
afterEach(function() {
|
||||
fetchMock.restore()
|
||||
})
|
||||
|
||||
const headers = {
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
|
||||
it('handles GET requests', function() {
|
||||
fetchMock.once(
|
||||
{ method: 'GET', url: '/test', headers },
|
||||
{ status: 200, body: { result: 'success' } }
|
||||
)
|
||||
|
||||
return expect(getJSON('/test')).to.eventually.deep.equal({
|
||||
result: 'success'
|
||||
})
|
||||
})
|
||||
|
||||
it('handles 4xx responses', function() {
|
||||
fetchMock.get('/test', {
|
||||
status: 400,
|
||||
body: { message: 'The request was invalid' }
|
||||
})
|
||||
|
||||
return expect(getJSON('/test'))
|
||||
.to.eventually.be.rejectedWith('Bad Request')
|
||||
.and.be.an.instanceOf(OError)
|
||||
.to.nested.include({
|
||||
'info.response.status': 400,
|
||||
'info.data.message': 'The request was invalid'
|
||||
})
|
||||
})
|
||||
|
||||
it('handles 5xx responses', async function() {
|
||||
fetchMock.get('/test', { status: 500 })
|
||||
|
||||
return expect(getJSON('/test'))
|
||||
.to.eventually.be.rejectedWith('Internal Server Error')
|
||||
.and.be.an.instanceOf(OError)
|
||||
.to.nested.include({
|
||||
'info.response.status': 500
|
||||
})
|
||||
})
|
||||
|
||||
it('handles POST requests', function() {
|
||||
const body = { example: true }
|
||||
|
||||
fetchMock.once(
|
||||
{ method: 'POST', url: '/test', headers, body },
|
||||
{ status: 200, body: { result: 'success' } }
|
||||
)
|
||||
|
||||
return expect(postJSON('/test', { body })).to.eventually.deep.equal({
|
||||
result: 'success'
|
||||
})
|
||||
})
|
||||
|
||||
it('handles PUT requests', function() {
|
||||
const body = { example: true }
|
||||
|
||||
fetchMock.once(
|
||||
{ method: 'PUT', url: '/test', headers, body },
|
||||
{ status: 200, body: { result: 'success' } }
|
||||
)
|
||||
|
||||
return expect(putJSON('/test', { body })).to.eventually.deep.equal({
|
||||
result: 'success'
|
||||
})
|
||||
})
|
||||
|
||||
it('handles DELETE requests', function() {
|
||||
fetchMock.once({ method: 'DELETE', url: '/test', headers }, { status: 204 })
|
||||
|
||||
return expect(deleteJSON('/test')).to.eventually.deep.equal({})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user