1 |
|
2 |
|
3 | 'use strict';
|
4 |
|
5 | GLOBAL.fetch = require('node-fetch');
|
6 |
|
7 | const nock = require('nock');
|
8 | const expect = require('chai').expect;
|
9 | const subject = require('../src/search');
|
10 |
|
11 | const fixtureFound = require('./fixtures/es-v3-search-found');
|
12 | const fixtureEmpty = require('./fixtures/es-v3-search-empty');
|
13 |
|
14 | describe('Search', () => {
|
15 |
|
16 | describe('results found', () => {
|
17 |
|
18 | let result;
|
19 | let request;
|
20 |
|
21 | beforeEach(() => {
|
22 | request = nock('https://next-elastic.ft.com')
|
23 | .post('/v3_api_v2/item/_search', /"field\.name":"found"/)
|
24 | .reply(200, fixtureFound);
|
25 |
|
26 | return subject({ filter: [ 'field.name', 'found' ] }).then(data => result = data);
|
27 | });
|
28 |
|
29 | it('posts search request', () => {
|
30 | expect(request.isDone()).to.be.ok;
|
31 | });
|
32 |
|
33 | it('returns an array of source documents', () => {
|
34 | expect(result).to.be.an.instanceof(Array);
|
35 |
|
36 | result.forEach(item => {
|
37 | expect(item).not.to.include.keys('_id', '_source');
|
38 | });
|
39 | });
|
40 |
|
41 | it('appends total search result count', () => {
|
42 | expect(result.total).to.equal(fixtureFound.hits.total);
|
43 | });
|
44 |
|
45 | });
|
46 |
|
47 | describe('results empty', () => {
|
48 |
|
49 | let result;
|
50 | let request;
|
51 |
|
52 | beforeEach(() => {
|
53 | request = nock('https://next-elastic.ft.com')
|
54 | .post('/v3_api_v2/item/_search', /"field\.name":"empty"/)
|
55 | .reply(200, fixtureEmpty);
|
56 |
|
57 | return subject({ filter: [ 'field.name', 'empty' ] }).then(data => result = data);
|
58 | });
|
59 |
|
60 | it('posts search request', () => {
|
61 | expect(request.isDone()).to.be.ok;
|
62 | });
|
63 |
|
64 | it('returns an empty array', () => {
|
65 | expect(result).to.be.an.instanceof(Array);
|
66 | });
|
67 |
|
68 | it('appends total search result count', () => {
|
69 | expect(result.total).to.equal(fixtureEmpty.hits.total);
|
70 | });
|
71 |
|
72 | });
|
73 |
|
74 | });
|