UNPKG

@webex/webex-core

Version:

Plugin handling for Cisco Webex

149 lines (126 loc) 3.82 kB
/*! * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file. */ import {assert} from '@webex/test-helper-chai'; import sinon from 'sinon'; import {Page} from '@webex/webex-core'; describe('webex-core', () => { describe('page', () => { describe('#constructor', () => { let page; beforeAll(() => { sinon.stub(Page, 'parseLinkHeaders'); const response = { body: { items: [1, 2, 3], }, headers: { link: 'FakeHeaderLinks', }, }; page = new Page(response, 'FakeWebex'); }); after(() => { Page.parseLinkHeaders.restore(); }); it('stores response items', () => { assert.deepEqual(page.items, [1, 2, 3]); }); it('parses header links', () => { assert.calledWith(Page.parseLinkHeaders, 'FakeHeaderLinks'); }); it('sets webex', () => { assert.equal(page.webex, 'FakeWebex'); }); }); describe('#next', () => { let page, webex; beforeAll(() => { webex = { request: sinon.stub().returns( Promise.resolve({ body: { items: [4, 5, 6], }, headers: { link: '<https://www.cisco.com>; rel=previous', }, }) ), }; const response = { body: { items: [1, 2, 3], }, headers: { link: '<https://www.cisco.com>; rel=next', }, }; page = new Page(response, webex); }); it('has next link', () => { assert(page.hasNext()); }); it('retrieves previous link', () => page.next().then((nextPage) => { assert.deepEqual(nextPage.items, [4, 5, 6]); assert.calledWith(webex.request, {uri: 'https://www.cisco.com'}); })); }); describe('#previous', () => { let page, webex; beforeAll(() => { webex = { request: sinon.stub().returns( Promise.resolve({ body: { items: [4, 5, 6], }, headers: { link: '<https://www.cisco.com>; rel=previous', }, }) ), }; const response = { body: { items: [1, 2, 3], }, headers: { link: '<https://www.cisco.com>; rel=previous', }, }; page = new Page(response, webex); }); it('has previous link', () => { assert(page.hasPrevious()); }); it('retrieves previous link', () => page.previous().then((prevPage) => { assert.deepEqual(prevPage.items, [4, 5, 6]); assert.calledWith(webex.request, {uri: 'https://www.cisco.com'}); })); }); describe('#parseLinkHeaders', () => { const singleLinkHeader = '<https://www.cisco.com>; rel=cisco'; const multipleLinkHeader = [ '<https://www.ciscospark.com>; rel=webex', '<https://www.cisco.com>; rel=cisco', ]; it('returns empty object if there are not any link headers', () => { assert.deepEqual(Page.parseLinkHeaders(), {}); }); it('returns object containing one link if only one link header passed as a string', () => { assert.deepEqual(Page.parseLinkHeaders(singleLinkHeader), { cisco: 'https://www.cisco.com', }); }); it('returns object containing multiple links when multiple headers passed as an array', () => { assert.deepEqual(Page.parseLinkHeaders(multipleLinkHeader), { webex: 'https://www.ciscospark.com', cisco: 'https://www.cisco.com', }); }); }); }); });