1 | 'use strict';
|
2 |
|
3 | const assert = require('assert');
|
4 | const Request = require('../lib/request');
|
5 |
|
6 | const HOST = 'https://example.com';
|
7 |
|
8 | describe('Request', () => {
|
9 | describe('.baseUrl', () => {
|
10 | it('sets the base URL', () => {
|
11 | const request = Request.create();
|
12 | request.baseUrl(HOST);
|
13 | assert.equal(request._baseUrl, HOST);
|
14 | });
|
15 |
|
16 | it('sets the base with queries', () => {
|
17 | const request = Request.create();
|
18 | request.baseUrl(HOST + '?a=1&n=2');
|
19 | assert.equal(request._baseUrl, HOST + '?a=1&n=2');
|
20 | });
|
21 | });
|
22 |
|
23 | describe('.getUrl', () => {
|
24 | it('returns an url', () => {
|
25 | const request = Request.create();
|
26 | request.baseUrl(HOST);
|
27 |
|
28 | assert.equal(request.getUrl(), HOST);
|
29 | });
|
30 |
|
31 | it('returns an url including query strings', () => {
|
32 | const request = Request.create();
|
33 | request
|
34 | .baseUrl(HOST)
|
35 | .addQuery('a', 1)
|
36 | .addQuery('b', 2);
|
37 |
|
38 | assert.equal(request.getUrl(), HOST + '?a=1&b=2');
|
39 | });
|
40 |
|
41 | it('query object gets appended to url queries', () => {
|
42 | const request = Request.create();
|
43 | request
|
44 | .baseUrl(HOST + '?a=1&b=2')
|
45 | .addQuery('a', 10)
|
46 | .addQuery('b', 20);
|
47 |
|
48 | assert.equal(request.getUrl(), HOST + '?a=1&b=2&a=10&b=20');
|
49 | });
|
50 |
|
51 | it('supports multiple queries', () => {
|
52 | const request = Request.create();
|
53 | request.baseUrl(HOST + '?a=1&a=2').addQuery('a', 3);
|
54 |
|
55 | assert.equal(request.getUrl(), HOST + '?a=1&a=2&a=3');
|
56 | });
|
57 |
|
58 | it('uri-encodes query string parameters', () => {
|
59 | const request = Request.create();
|
60 | request
|
61 | .baseUrl(HOST)
|
62 | .addQuery('a', 10)
|
63 | .addQuery('b', '#?& !');
|
64 |
|
65 | assert.equal(request.getUrl(), HOST + '?a=10&b=%23%3F%26%20%21');
|
66 | });
|
67 |
|
68 | it('uri-encodes multi-parameter queries', () => {
|
69 | const request = Request.create();
|
70 | request.baseUrl(HOST).addQuery('a', [1, 2]);
|
71 | assert.equal(request.getUrl(), HOST + '?a%5B0%5D=1&a%5B1%5D=2');
|
72 | });
|
73 | });
|
74 |
|
75 | describe('.getRequestKey', () => {
|
76 | it('returns a cacheable key for a request', () => {
|
77 | const request = Request.create();
|
78 |
|
79 | request
|
80 | .method('GET')
|
81 | .baseUrl(HOST)
|
82 | .addQuery('a', 1)
|
83 | .addQuery('b', 2);
|
84 |
|
85 | const key = `GET:${HOST}?a=1&b=2`;
|
86 | assert.equal(request.getRequestKey(), key);
|
87 | });
|
88 | });
|
89 | });
|