sdk-lord-of-the-rings
Version:
```bash npm i sdk-lord-of-the-rings ```
223 lines (174 loc) • 6.18 kB
JavaScript
'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');
});
});