1 |
|
2 | 'use strict';
|
3 |
|
4 | GLOBAL.fetch = require('node-fetch');
|
5 |
|
6 | const nock = require('nock');
|
7 | const expect = require('chai').expect;
|
8 | const subject = require('../main').relatedTags;
|
9 |
|
10 | describe('related tags', () => {
|
11 |
|
12 | context('success', () => {
|
13 |
|
14 | let result;
|
15 | let request;
|
16 |
|
17 | beforeEach(() => {
|
18 | request = nock('https://next-elastic.ft.com')
|
19 | .post('/v3_api_v2/item/_search', /"metadata\.idV1":"success"/)
|
20 | .once()
|
21 | .reply(200, require('./fixtures/related-tags-elastic.json'));
|
22 |
|
23 | return subject({
|
24 | taxonomies: [ 'topics', 'sections', 'people', 'organisations' ],
|
25 | id: 'success',
|
26 | range: 60
|
27 | })
|
28 | .then(data => result = data);
|
29 | });
|
30 |
|
31 | afterEach(() => {
|
32 | result = null;
|
33 | request.isDone();
|
34 | });
|
35 |
|
36 | it('returns an one-dimensional array of objects', () => {
|
37 | expect(result).to.be.an('array');
|
38 | expect(result.length).to.equal(12);
|
39 |
|
40 | result.forEach(tag => {
|
41 | expect(tag).to.be.an('object');
|
42 | expect(tag).to.include.keys('prefLabel', 'taxonomy', 'idV1');
|
43 | });
|
44 | });
|
45 |
|
46 | it('returns each tag with mapped name and taxonomy', () => {
|
47 | expect(result[0].prefLabel).to.eq('Markets');
|
48 | expect(result[0].taxonomy).to.eq('sections');
|
49 | });
|
50 |
|
51 | });
|
52 |
|
53 | context('failure', () => {
|
54 |
|
55 | let result;
|
56 | let request;
|
57 |
|
58 | beforeEach(() => {
|
59 | request = nock('https://next-elastic.ft.com')
|
60 | .post('/v3_api_v2/item/_search', /"metadata\.idV1":"failure"/)
|
61 | .once()
|
62 | .reply(500, { omg: 'wtf' });
|
63 |
|
64 | return subject({
|
65 | taxonomies: [ 'topics', 'sections', 'people', 'organisations' ],
|
66 | id: 'failure',
|
67 | range: 60
|
68 | })
|
69 | .then(data => result = data);
|
70 | });
|
71 |
|
72 | afterEach(() => {
|
73 | result = null;
|
74 | request.isDone();
|
75 | });
|
76 |
|
77 | it('still returns an array', () => {
|
78 | expect(result).to.be.an('array');
|
79 | expect(result.length).to.equal(0);
|
80 | });
|
81 |
|
82 | });
|
83 |
|
84 | });
|