UNPKG

rx-elasticsearch

Version:

RxJS Observables for the Elasticsearch client

53 lines (45 loc) 1.55 kB
import 'expectations'; import * as sinon from 'sinon'; import * as elasticsearch from 'elasticsearch'; import {Scroll} from '../src/Scroll'; describe('The scrolling function tested with a spy Elasticsearch client', () => { let client:any = new elasticsearch.Client({}); let responses = [{ _scroll_id: 1000, hits: {hits: [{}, {}, {}, {}, {}]} }, { _scroll_id: 1001, hits: {hits: [{}, {}, {}, {}, {}]} }, { _scroll_id: 1002, hits: {hits: []} }]; beforeEach(() => { sinon .stub(client, 'search', null) .returns(Promise.resolve(responses[0])); sinon .stub(client, 'scroll', null) .onFirstCall().returns(Promise.resolve(responses[1])) .onSecondCall().returns(Promise.resolve(responses[2])) .onThirdCall().returns(Promise.resolve(null)); sinon .stub(client, 'clearScroll', null) .returns(Promise.resolve()); }); it('check if scrollable returns correct results', () => { return Scroll.scroll({}, client) .do( res => { expect(res).toEqual(responses[0]); responses.shift(); } ) .toPromise() .then(() => { expect(client.search.calledOnce).toBe(true); expect(client.scroll.calledTwice).toBe(true); expect(client.clearScroll.calledOnce).toBe(true); }); }); });