UNPKG

sdk-lord-of-the-rings

Version:

```bash npm i sdk-lord-of-the-rings ```

223 lines (174 loc) 6.18 kB
'use strict'; import chai from 'chai'; import Endpoint from '../src/endpoint.js'; const instance = new Endpoint({ path: '/book' }); describe('Sorting:', function () { it('It should create asc sort url', function () { const url = instance._createQueryUrl({ sort: { name: 'asc' }, }); const urlLink = new URL(url); const sort = urlLink.searchParams.get('sort'); chai.expect(sort).to.be.eql('name:asc'); }); it('It should create desc sort url', function () { const url = instance._createQueryUrl({ sort: { name: 'desc' }, }); const urlLink = new URL(url); const sort = urlLink.searchParams.get('sort'); chai.expect(sort).to.be.eql('name:desc'); }); }); describe('Pagination:', function () { it('It should make pagination link through offset', function () { const url = instance._createQueryUrl({ pagination: { limit: 20, offset: 10 } }); const urlLink = new URL(url); const limit = urlLink.searchParams.get('limit'); const offset = urlLink.searchParams.get('offset'); chai.expect(limit).to.be.eql('20'); chai.expect(offset).to.be.eql('10'); }); it('It should make pagination link through page', function () { const url = instance._createQueryUrl({ pagination: { limit: 20, page: 2 } }); const urlLink = new URL(url); const limit = urlLink.searchParams.get('limit'); const page = urlLink.searchParams.get('page'); chai.expect(limit).to.be.eql('20'); chai.expect(page).to.be.eql('2'); }); }); describe('Filtration:', function () { it('It should create match query', function () { const url = instance._createQueryUrl({ filter: { match: [{ name: 'Gandalf' }], }, }); const urlLink = new URL(url); const name = urlLink.searchParams.get('name'); chai.expect(name).to.be.eql('Gandalf'); }); it('It should create not match query', function () { const url = instance._createQueryUrl({ filter: { notMatch: [{ name: 'Gandalf' }], }, }); const urlLink = new URL(url); const name = urlLink.searchParams.get('name!'); chai.expect(name).to.be.eql('Gandalf'); }); it('It should create include query', function () { const url = instance._createQueryUrl({ filter: { include: [{ name: ['Gandalf', 'Frodo'] }], }, }); const urlLink = new URL(url); const name = urlLink.searchParams.get('name'); chai.expect(name).to.be.eql('Gandalf,Frodo'); }); it('It should create exclude query', function () { const url = instance._createQueryUrl({ filter: { exclude: [{ name: ['Gandalf', 'Frodo'] }], }, }); const urlLink = new URL(url); const name = urlLink.searchParams.get('name!'); chai.expect(name).to.be.eql('Gandalf,Frodo'); }); it('It should create exist query', function () { const url = instance._createQueryUrl({ filter: { exist: ['name'], }, }); const urlLink = new URL(url); const name = urlLink.searchParams.get('name'); chai.expect(name).to.be.eql(''); }); it('It should create not exist query', function () { const url = instance._createQueryUrl({ filter: { notExist: ['name'], }, }); const urlLink = new URL(url); const name = urlLink.searchParams.get('!name'); chai.expect(name).to.be.eql(''); }); it('It should create regex query', function () { const url = instance._createQueryUrl({ filter: { regex: [{ name: 'Gandalf' }], }, }); const urlLink = new URL(url); const name = urlLink.searchParams.get('name'); chai.expect(name).to.be.eql('/Gandalf/i'); }); it('It should create not regex query', function () { const url = instance._createQueryUrl({ filter: { notRegex: [{ name: 'Gandalf' }], }, }); const urlLink = new URL(url); const name = urlLink.searchParams.get('name!'); chai.expect(name).to.be.eql('/Gandalf/i'); }); it('It should create gt query', function () { const url = instance._createQueryUrl({ filter: { numberComparison: { gt: [{ academyAwardWins: 100 }], } }, }); const urlLink = new URL(url); const name = urlLink.searchParams.get('academyAwardWins>100'); chai.expect(name).to.be.eql(''); }); it('It should create gte query', function () { const url = instance._createQueryUrl({ filter: { numberComparison: { gte: [{ academyAwardWins: 100 }], } }, }); const urlLink = new URL(url); const name = urlLink.searchParams.get('academyAwardWins>'); chai.expect(name).to.be.eql('100'); }); it('It should create lt query', function () { const url = instance._createQueryUrl({ filter: { numberComparison: { lt: [{ academyAwardWins: 100 }], } }, }); const urlLink = new URL(url); const name = urlLink.searchParams.get('academyAwardWins<100'); chai.expect(name).to.be.eql(''); }); it('It should create lte query', function () { const url = instance._createQueryUrl({ filter: { numberComparison: { lte: [{ academyAwardWins: 100 }], } }, }); const urlLink = new URL(url); const name = urlLink.searchParams.get('academyAwardWins<'); chai.expect(name).to.be.eql('100'); }); });