1 | const test = require('ava')
|
2 | const _ = require('lodash')
|
3 | const errors = require('../src/errors')
|
4 | const { setup } = require('./_helpers')
|
5 |
|
6 | test('adjust the default entries per page', async (t) => {
|
7 | const { server } = await setup({ perPage: 3 })
|
8 | const { result } = await server.inject('/')
|
9 |
|
10 | t.is(result.result.length, 3)
|
11 | t.is(result.total, 9)
|
12 | t.is(result.per_page, 3)
|
13 | t.is(result.page, 1)
|
14 | t.deepEqual(_.keys(result._links).sort(), ['self', 'first', 'last', 'next'].sort())
|
15 | })
|
16 |
|
17 | test('adjust the default entries per page | 1000', async (t) => {
|
18 | const { server } = await setup({ perPage: 1000 })
|
19 | const { result } = await server.inject('/')
|
20 |
|
21 | t.is(result.statusCode, 400)
|
22 | t.is(result.message, errors.invalidOptions)
|
23 | })
|
24 |
|
25 | test('adjust the default entries per page | 0', async (t) => {
|
26 | const { server } = await setup({ perPage: 0 })
|
27 | const { result } = await server.inject('/')
|
28 |
|
29 | t.is(result.statusCode, 400)
|
30 | t.is(result.message, errors.invalidOptions)
|
31 | })
|
32 |
|
33 | test('adjust the total option', async (t) => {
|
34 | const { server } = await setup({ total: 5 })
|
35 | const { result } = await server.inject('/?page=2&per_page=2')
|
36 |
|
37 | t.is(result.result.length, 9)
|
38 | t.is(result.total, 5)
|
39 | t.is(result.per_page, 2)
|
40 | t.is(result.page, 2)
|
41 | t.is(result._links.last.href, '/?page=3&per_page=2')
|
42 | })
|
43 |
|
44 | test('adjust the total option | -1', async (t) => {
|
45 | const { server } = await setup({ total: -1 })
|
46 | const { result } = await server.inject('/')
|
47 |
|
48 | t.is(result.statusCode, 400)
|
49 | t.is(result.message, errors.invalidOptions)
|
50 | })
|
51 |
|
52 | test('adjust the total option | \'foo\'', async (t) => {
|
53 | const { server } = await setup({ total: 'foo' })
|
54 | const { result } = await server.inject('/?page=2&per_page=2')
|
55 |
|
56 | t.is(result.statusCode, 400)
|
57 | t.is(result.message, errors.invalidOptions)
|
58 | })
|
59 |
|
60 | test('adjust the default access key', async (t) => {
|
61 | const { server } = await setup({ key: 'foo' })
|
62 | const { result } = await server.inject('/')
|
63 |
|
64 | t.is(result.foo.length, 9)
|
65 | t.is(result.total, 9)
|
66 | t.is(result.per_page, 100)
|
67 | t.is(result.page, 1)
|
68 | t.deepEqual(_.keys(result._links).sort(), ['self', 'first', 'last'].sort())
|
69 | })
|
70 |
|
71 | test('adjust the default access key | 0', async (t) => {
|
72 | const { server } = await setup({ key: 0 })
|
73 | const { result } = await server.inject('/')
|
74 |
|
75 | t.is(result.statusCode, 400)
|
76 | t.is(result.message, errors.invalidOptions)
|
77 | })
|
78 |
|
79 | test('adjust the default entries per page | undefined', async (t) => {
|
80 | const { server } = await setup({ key: undefined })
|
81 | const { result } = await server.inject('/')
|
82 |
|
83 | t.is(result.statusCode, 400)
|
84 | t.is(result.message, errors.invalidOptions)
|
85 | })
|