1 | const test = require('tap').test;
|
2 | const TextEncoder = require('util').TextEncoder;
|
3 | const TextDecoder = require('util').TextDecoder;
|
4 |
|
5 | const FetchTool = require('../../src/FetchTool');
|
6 |
|
7 | test('send success returns response.text()', t => {
|
8 | global.fetch = () => Promise.resolve({
|
9 | ok: true,
|
10 | text: () => Promise.resolve('successful response')
|
11 | });
|
12 |
|
13 | const tool = new FetchTool();
|
14 |
|
15 | return t.resolves(
|
16 | tool.send('url').then(result => {
|
17 | t.equal(result, 'successful response');
|
18 | })
|
19 | );
|
20 | });
|
21 |
|
22 | test('send failure returns response.status', t => {
|
23 | global.fetch = () => Promise.resolve({
|
24 | ok: false,
|
25 | status: 500
|
26 | });
|
27 |
|
28 | const tool = new FetchTool();
|
29 |
|
30 | return t.rejects(tool.send('url'), 500);
|
31 | });
|
32 |
|
33 | test('get success returns Uint8Array.body(response.arrayBuffer())', t => {
|
34 | const text = 'successful response';
|
35 | const encoding = 'utf-8';
|
36 | const encoded = new TextEncoder().encode(text);
|
37 | const decoder = new TextDecoder(encoding);
|
38 |
|
39 | global.fetch = () => Promise.resolve({
|
40 | ok: true,
|
41 | arrayBuffer: () => Promise.resolve(encoded.buffer)
|
42 | });
|
43 |
|
44 | const tool = new FetchTool();
|
45 |
|
46 | return t.resolves(
|
47 | tool.get({url: 'url'}).then(result => {
|
48 | t.equal(decoder.decode(result), text);
|
49 | })
|
50 | );
|
51 | });
|
52 |
|
53 | test('get with 404 response returns null data', t => {
|
54 | global.fetch = () => Promise.resolve({
|
55 | ok: false,
|
56 | status: 404
|
57 | });
|
58 |
|
59 | const tool = new FetchTool();
|
60 |
|
61 | return t.resolves(
|
62 | tool.get('url').then(result => {
|
63 | t.equal(result, null);
|
64 | })
|
65 | );
|
66 | });
|
67 |
|
68 | test('get failure returns response.status', t => {
|
69 | global.fetch = () => Promise.resolve({
|
70 | ok: false,
|
71 | status: 500
|
72 | });
|
73 |
|
74 | const tool = new FetchTool();
|
75 |
|
76 | return t.rejects(tool.get({url: 'url'}), 500);
|
77 | });
|