Skip to content

Commit 80589f3

Browse files
test next router pagination
1 parent ed25204 commit 80589f3

2 files changed

Lines changed: 93 additions & 0 deletions

File tree

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
"eslint-plugin-prettier": "^3.3.1",
5757
"jest": "^26.6.3",
5858
"next": "^11.0.1",
59+
"next-router-mock": "^0.1.4",
5960
"prettier": "^2.2.1",
6061
"react": "^17.0.2",
6162
"react-dom": "^17.0.2",
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
2+
import React from 'react'
3+
import { act, renderHook } from '@testing-library/react-hooks'
4+
import router from 'next/router'
5+
6+
import { useSearchAndPaginationQueryUrlParameters } from '../nextRouterPagination'
7+
8+
jest.mock('next/router', () => require('next-router-mock'))
9+
10+
test('should initialize pagination', () => {
11+
const { result } = renderHook(() =>
12+
useSearchAndPaginationQueryUrlParameters()
13+
)
14+
15+
expect(result.current.page).toBe(0)
16+
expect(result.current.search).toBe('')
17+
expect(result.current.size).toBe(15)
18+
})
19+
20+
test('should change page', () => {
21+
const { result } = renderHook(() =>
22+
useSearchAndPaginationQueryUrlParameters()
23+
)
24+
25+
act(() => {
26+
result.current.paginationActions.setPage(2)
27+
})
28+
29+
expect(result.current.page).toBe(2)
30+
expect(router.query.page).toBe('2')
31+
})
32+
33+
test('should change search', () => {
34+
const { result } = renderHook(() =>
35+
useSearchAndPaginationQueryUrlParameters()
36+
)
37+
38+
act(() => {
39+
result.current.searchActions.search('Max')
40+
})
41+
42+
expect(result.current.search).toBe('Max')
43+
expect(router.query.search).toBe('Max')
44+
})
45+
46+
test('on search change -> page should be reset', () => {
47+
const { result } = renderHook(() =>
48+
useSearchAndPaginationQueryUrlParameters()
49+
)
50+
51+
act(() => {
52+
result.current.paginationActions.setPage(2)
53+
})
54+
55+
expect(result.current.page).toBe(2)
56+
expect(router.query.page).toBe('2')
57+
58+
act(() => {
59+
result.current.searchActions.search('Max')
60+
})
61+
62+
expect(result.current.search).toBe('Max')
63+
expect(result.current.page).toBe(0)
64+
expect(router.query.search).toBe('Max')
65+
expect(router.query.page).toBeUndefined()
66+
})
67+
68+
test('clear pagination should reset search and page', () => {
69+
const { result } = renderHook(() =>
70+
useSearchAndPaginationQueryUrlParameters()
71+
)
72+
73+
act(() => {
74+
result.current.searchActions.search('Max')
75+
})
76+
77+
act(() => {
78+
result.current.paginationActions.setPage(2)
79+
})
80+
81+
expect(router.query.search).toBe('Max')
82+
expect(router.query.page).toBe('2')
83+
84+
act(() => {
85+
result.current.searchActions.clear()
86+
})
87+
88+
expect(result.current.search).toBe('')
89+
expect(result.current.page).toBe(0)
90+
expect(router.query.search).toBeUndefined()
91+
expect(router.query.page).toBeUndefined()
92+
})

0 commit comments

Comments
 (0)