UNPKG

4.24 kBJavaScriptView Raw
1const test = require('ava')
2const _ = require('lodash')
3const { getQueries, getParams } = require('./_helpers')
4const pagination = require('../src/pagination')
5const { requestObj, aka } = require('./fixtures/pagination')
6
7const pluginOptions = {
8 paramNames: {
9 perPage: 'per_page',
10 page: 'page',
11 total: 'total'
12 }
13}
14
15test('first page has no prev HAL link', (t) => {
16 const options = { perPage: 1 }
17 const result = pagination.getLinks('foo', 1, 3, 9, requestObj, aka, options, pluginOptions)
18
19 t.truthy(_.has(result, 'first'))
20 t.falsy(_.has(result, 'prev'), false)
21 t.truthy(_.has(result, 'next'), true)
22 t.truthy(_.has(result, 'last'), true)
23})
24
25test('last page has no next HAL link', (t) => {
26 const options = { perPage: 1 }
27 const result = pagination.getLinks('foo', 3, 3, 9, requestObj, aka, options, pluginOptions)
28
29 t.truthy(_.has(result, 'first'), true)
30 t.truthy(_.has(result, 'prev'), true)
31 t.falsy(_.has(result, 'next'), false)
32 t.truthy(_.has(result, 'last'), true)
33})
34
35test('middle page has all HAL links', (t) => {
36 const customPluginOptions = {
37 paramNames: {
38 perPage: 'pageSize',
39 page: 'currentPage',
40 total: 'totalCount'
41 }
42 }
43
44 const options = { perPage: 1 }
45 const result = pagination.getLinks('foo', 2, 3, 9, requestObj, aka, options, customPluginOptions)
46
47 t.truthy(_.has(result, 'first'))
48 t.deepEqual(getQueries(result.first.href), {
49 pageSize: '3'
50 })
51
52 t.truthy(_.has(result, 'prev'))
53 t.deepEqual(getQueries(result.prev.href), {
54 pageSize: '3'
55 })
56
57 t.truthy(_.has(result, 'next'))
58 t.deepEqual(getQueries(result.next.href), {
59 pageSize: '3',
60 currentPage: '3'
61 })
62
63 t.truthy(_.has(result, 'last'))
64 t.deepEqual(getQueries(result.last.href), {
65 pageSize: '3',
66 currentPage: '3'
67 })
68})
69
70test('middle page has all HAL links | custom param names', (t) => {
71 const options = { perPage: 1 }
72 const result = pagination.getLinks('foo', 2, 3, 9, requestObj, aka, options, pluginOptions)
73
74 t.truthy(_.has(result, 'first'))
75 t.deepEqual(getQueries(result.first.href), {
76 per_page: '3'
77 })
78
79 t.truthy(_.has(result, 'prev'))
80 t.deepEqual(getQueries(result.prev.href), {
81 per_page: '3'
82 })
83
84 t.truthy(_.has(result, 'next'))
85 t.deepEqual(getQueries(result.next.href), {
86 per_page: '3',
87 page: '3'
88 })
89
90 t.truthy(_.has(result, 'last'))
91 t.deepEqual(getQueries(result.last.href), {
92 per_page: '3',
93 page: '3'
94 })
95})
96
97test('customized middle page has all HAL links', (t) => {
98 const options = { perPage: 3 }
99 const result = pagination.getLinks('foo', 2, 3, 9, requestObj, aka, options, pluginOptions)
100
101 t.truthy(_.has(result, 'first'))
102 t.is(getQueries(result.first.href), undefined, 'first')
103
104 t.truthy(_.has(result, 'prev'))
105 t.is(getQueries(result.prev.href), undefined, 'prev')
106
107 t.truthy(_.has(result, 'next'))
108 t.deepEqual(getQueries(result.next.href), {
109 page: '3'
110 })
111
112 t.truthy(_.has(result, 'last'))
113 t.deepEqual(getQueries(result.last.href), {
114 page: '3'
115 })
116})
117
118test('has no prev/next HAL links if page is zero', (t) => {
119 const options = { perPage: 1 }
120 const result = pagination.getLinks('foo', 0, 3, 9, requestObj, aka, options, pluginOptions)
121
122 t.truthy(_.has(result, 'first'))
123 t.falsy(_.has(result, 'prev'))
124 t.falsy(_.has(result, 'next'))
125 t.truthy(_.has(result, 'last'))
126})
127
128test('has no prev/next HAL links if page is too high', (t) => {
129 const options = { perPage: 1 }
130 const result = pagination.getLinks('foo', 4, 3, 9, requestObj, aka, options, pluginOptions)
131
132 t.truthy(_.has(result, 'first'))
133 t.falsy(_.has(result, 'prev'))
134 t.falsy(_.has(result, 'next'))
135 t.truthy(_.has(result, 'last'))
136})
137
138test('passes request.params to aka', (t) => {
139 const options = { perPage: 1 }
140 const result = pagination.getLinks('foo', 2, 1, 5, requestObj, aka, options, pluginOptions)
141
142 t.truthy(_.has(result, 'first'))
143 t.deepEqual(getParams(result.first.href), {
144 id: '1'
145 })
146 t.truthy(_.has(result, 'prev'))
147 t.deepEqual(getParams(result.prev.href), {
148 id: '1'
149 })
150 t.truthy(_.has(result, 'next'))
151 t.deepEqual(getParams(result.next.href), {
152 id: '1'
153 })
154 t.truthy(_.has(result, 'last'))
155 t.deepEqual(getParams(result.last.href), {
156 id: '1'
157 })
158})