Skip to content

Commit fef1c59

Browse files
committed
chore: refactor tests
1 parent bf97d73 commit fef1c59

File tree

2 files changed

+31
-34
lines changed

2 files changed

+31
-34
lines changed

cypress/integration/default/dynamic-routes.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ describe('Static Routing', () => {
2424
it('revalidates page via refresh hooks on a static route', () => {
2525
cy.request({ url: '/api/revalidate/' }).then((res) => {
2626
expect(res.status).to.eq(200)
27-
expect(res.body).to.equal({ revalidated: true })
27+
expect(res.body).to.equal({ code: 200, message: 'success' })
2828
})
2929
})
3030
})
Lines changed: 30 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,60 @@
1+
/* eslint-disable max-nested-callbacks */
12
import { mockRequest } from 'next/dist/server/lib/mock-request'
23

3-
import { netlifyApiFetch, getNextServer, NextServerType } from './handlerUtils'
4+
import { getNextServer, NextServerType, netlifyApiFetch } from './handlerUtils'
45
import { NetlifyNextServer } from './server'
56

6-
const NextServer: NextServerType = getNextServer()
7-
87
jest.mock('./handlerUtils', () => {
98
const originalModule = jest.requireActual('./handlerUtils')
109

1110
return {
1211
__esModule: true,
1312
...originalModule,
14-
netlifyApiFetch: jest.fn(({ payload }) => {
15-
switch (payload.paths[0]) {
16-
case '/getStaticProps/with-revalidate/':
17-
return Promise.resolve({ code: 200, message: 'Revalidated' })
18-
case '/not-a-path/':
19-
return Promise.resolve({ code: 404, message: '404' })
20-
default:
21-
return Promise.reject(new Error('Error'))
22-
}
23-
}),
13+
netlifyApiFetch: jest.fn().mockResolvedValue({ ok: true }),
2414
}
2515
})
16+
const mockedApiFetch = netlifyApiFetch as jest.MockedFunction<typeof netlifyApiFetch>
2617

27-
jest.spyOn(NextServer.prototype, 'getRequestHandler').mockImplementation(() => () => Promise.resolve())
28-
29-
Object.setPrototypeOf(NetlifyNextServer, jest.fn())
30-
31-
const nextServer = new NetlifyNextServer({ conf: {}, dev: false })
32-
const requestHandler = nextServer.getRequestHandler()
18+
beforeAll(() => {
19+
const NextServer: NextServerType = getNextServer()
20+
jest.spyOn(NextServer.prototype, 'getRequestHandler').mockImplementation(() => () => Promise.resolve())
21+
Object.setPrototypeOf(NetlifyNextServer, jest.fn())
22+
})
3323

3424
describe('the netlify next server', () => {
35-
it('intercepts a request containing an x-prerender-revalidate header', async () => {
36-
const { req: mockReq, res: mockRes } = mockRequest(
37-
'/getStaticProps/with-revalidate/',
38-
{ 'x-prerender-revalidate': 'test' },
39-
'GET',
40-
)
41-
await requestHandler(mockReq, mockRes)
42-
expect(netlifyApiFetch).toHaveBeenCalled()
43-
})
25+
it('revalidates a request containing an `x-prerender-revalidate` header', async () => {
26+
const netlifyNextServer = new NetlifyNextServer({ conf: {} }, {})
27+
const requestHandler = netlifyNextServer.getRequestHandler()
4428

45-
it('silently revalidates and returns the original handler response', async () => {
4629
const { req: mockReq, res: mockRes } = mockRequest(
4730
'/getStaticProps/with-revalidate/',
4831
{ 'x-prerender-revalidate': 'test' },
4932
'GET',
5033
)
51-
await expect(requestHandler(mockReq, mockRes)).resolves.toBe(undefined)
34+
const response = await requestHandler(mockReq, mockRes)
35+
36+
expect(mockedApiFetch).toHaveBeenCalled()
37+
expect(response).toBe(undefined)
5238
})
5339

54-
it('throws an error when the revalidate API returns a 404 response', async () => {
40+
it('throws an error when invalid paths are revalidated', async () => {
41+
const netlifyNextServer = new NetlifyNextServer({ conf: {} }, {})
42+
const requestHandler = netlifyNextServer.getRequestHandler()
43+
5544
const { req: mockReq, res: mockRes } = mockRequest('/not-a-path/', { 'x-prerender-revalidate': 'test' }, 'GET')
56-
await expect(requestHandler(mockReq, mockRes)).rejects.toThrow('Unsuccessful revalidate - 404')
45+
46+
mockedApiFetch.mockResolvedValueOnce({ code: 404, message: 'Invalid paths' })
47+
await expect(requestHandler(mockReq, mockRes)).rejects.toThrow('Invalid paths')
5748
})
5849

5950
it('throws an error when the revalidate API is unreachable', async () => {
51+
const netlifyNextServer = new NetlifyNextServer({ conf: {} }, {})
52+
const requestHandler = netlifyNextServer.getRequestHandler()
53+
6054
const { req: mockReq, res: mockRes } = mockRequest('', { 'x-prerender-revalidate': 'test' }, 'GET')
61-
await expect(requestHandler(mockReq, mockRes)).rejects.toThrow('Unsuccessful revalidate - Error')
55+
56+
mockedApiFetch.mockRejectedValueOnce(new Error('Unable to connect'))
57+
await expect(requestHandler(mockReq, mockRes)).rejects.toThrow('Unable to connect')
6258
})
6359
})
60+
/* eslint-enable max-nested-callbacks */

0 commit comments

Comments
 (0)