UNPKG

1.71 kBJavaScriptView Raw
1/*global describe, beforeEach, it*/
2
3'use strict';
4
5GLOBAL.fetch = require('node-fetch');
6
7const nock = require('nock');
8const expect = require('chai').expect;
9const subject = require('../src/search');
10
11const fixtureFound = require('./fixtures/es-v3-search-found');
12const fixtureEmpty = require('./fixtures/es-v3-search-empty');
13
14describe('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});