mango-dct
Version:
NodeJS SDK for API Dynamic Calltracking by MANGO OFFICE
315 lines (248 loc) • 8.11 kB
JavaScript
const { expect } = require('chai');
const Helpers = require('../src/helpers');
describe('hello unit', () => {
it('true is true', () => {
expect(true).equal(true);
});
});
describe('метод Helpers.validate', () => {
it('заданы dateStart, dateEnd', () => {
const params = {
dateStart: '2017-06-30T00:00Z',
dateEnd: '2017-06-01T00:00Z'
};
const result = Helpers.validate.bind(Helpers, params);
expect(result).not.throw();
});
it('не заданы dateStart, dateEnd', () => {
const params = {
datstart: '27 june',
datend: '20 june'
};
const result = Helpers.validate.bind(Helpers, params);
const err = /^переданы не верные параметры$/;
expect(result).throw(Error, err);
});
it('задан параметр lastDays', () => {
const params = { lastDays: 31 };
const result = Helpers.validate.bind(Helpers, params);
expect(result).not.throw();
});
it('не задан параметр lastDays', () => {
const params = { days: 10 };
const result = Helpers.validate.bind(Helpers, params);
const err = /^переданы не верные параметры$/;
expect(result).throw(Error, err);
});
it('задан параметр yesterday', () => {
const params = { yesterday: true };
const result = Helpers.validate.bind(Helpers, params);
expect(result).not.throw();
});
it('задан параметр today', () => {
const params = { today: true };
const result = Helpers.validate.bind(Helpers, params);
expect(result).not.throw();
});
});
describe('метод Helpers.stringer', () => {
it('объект в строку параметров', () => {
const options = {
dateStart: '2017-06-11T00:00Z',
dateEnd: '2017-06-30T00:00Z',
isNew: 1,
callType: 3,
utmSource: 'google.com'
};
const result = Helpers.stringer(options);
const dest = 'dateStart=2017-06-11T00%3A00Z&dateEnd=2017-06-30T00%3A00Z&isNew=1&callType=3&utmSource=google.com';
expect(result).equal(dest);
});
});
describe('метод Helpers.normalize', () => {
it('объект с свойствами dateStart, dateEnd', () => {
const options = {
dateStart: '2017-06-11T00:00Z',
dateEnd: '2017-06-30T00:00Z',
};
const result = Helpers.normalize(options);
expect(result).deep.equal(options);
});
it('объект с свойством lastDays', () => {
const options = { lastDays: 10 };
const result = Helpers.normalize(options);
expect(result).not.equal({ lastDays: 10 });
});
});
describe('метод Helpers.lastDays', () => {
it('lastDays -7', () => {
const result = Helpers.lastDays.bind(Helpers, -7);
const err = /^lastDays должно быть больше нуля$/;
expect(result).to.throw(Error, err);
});
it('lastDays 0 ', () => {
const result = Helpers.lastDays.bind(Helpers, 0);
const err = /^lastDays должно быть больше нуля$/;
expect(result).to.throw(Error, err);
});
it('lastDays 12', () => {
const result = Helpers.lastDays.bind(Helpers, 12);
expect(result).to.not.throw();
});
it('lastDays 32', () => {
const result = Helpers.lastDays.bind(Helpers, 32);
const err = /^максимальный период выгрузки 31 день$/;
expect(result).to.throw(Error, err);
});
});
describe('метод Helpers.trimToMinutes', () => {
it('случайные дата-время', () => {
const extDate = '2017-12-23T17:44:43.453Z';
const result = Helpers.trimToMinutes(extDate);
expect(result).equal('2017-12-23T17:44Z');
});
});
describe('метод Helpers.pathname', () => {
it('случайный url', () => {
const result = Helpers.pathname('http://localhost:8080/mango-dct/webhook1?utm_source=vk');
expect(result).to.equal('/mango-dct/webhook1');
});
it('только pathname', () => {
const result = Helpers.pathname('/mango-dct/webhook2');
expect(result).to.equal('/mango-dct/webhook2');
});
it('pathname search hash', () => {
const result = Helpers.pathname('/mango/dct?utm_content=chtoto#gdeto');
expect(result).to.equal('/mango/dct');
});
it('пустой url', () => {
const result = Helpers.pathname('');
expect(result).to.equal(null);
});
});
describe('метод Helpers.testFilter', () => {
let json;
beforeEach(() => {
json = {
dateStart: '2017-06-30T00:00Z',
dateEnd: '2017-06-01T00:00Z',
callType: 1,
waitDuration: 16,
duration: 124,
number: 74950000000,
callStatus: 1110,
callerNumber: 74959999999,
utmSource: 'https://direct.yandex.ru',
utmMedium: 'cpc',
device: 'tablet'
};
});
it('{} [true]', () => {
const filter = {};
const due = true;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('callType:1 [true]', () => {
const filter = { callType: 1 };
const due = true;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('callType:"1" [true]', () => {
const filter = { callType: '1' };
const due = true;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('callType:1 duration:10 [true]', () => {
const filter = { callType: 1, duration: 124 };
const due = true;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('calltype:1 [false]', () => {
const filter = { calltype: 1 };
const due = false;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('utmMedium:"cpc", waitDuration:16 [true]', () => {
const filter = { utmMedium: 'cpc', waitDuration: 16 };
const due = true;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('utmMedium:" cpc" ', () => {
const filter = { utmMedium: ' cpc' };
const due = false;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('utmMedium:"" ', () => {
const filter = { utmMedium: '' };
const due = false;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('utmSource:/yandex/ [true]', () => {
const filter = { utmSource: /yandex/ };
const due = true;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('utmSource:/yandex/ [true]', () => {
const filter = { utmSource: /yandex/ };
const due = true;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('device:/tablet|desktop/ [true]', () => {
const filter = { device: /tablet|desktop/ };
const due = true;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('number:/^7495/ [true]', () => {
const filter = { number: /^7495/ };
const due = true;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('callType:/[1-3]/, number:/^7495/ [true]', () => {
const filter = { callType: /[1-3]/, number: /^7495/ };
const due = true;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('callType:1, waitDuration:"16", device:/CPC/i [true]', () => {
const filter = { callType: 1, waitDuration: '16', utmMedium: /CPC/i };
const due = true;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('callType:/1,2/g [false]', () => {
const filter = { callType: /1,2/g };
const due = false;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('custom: 12345 [false]', () => {
const filter = { custom: 12345 };
const due = false;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('device:true [false]', () => {
const filter = { device: true };
const due = false;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
it('dateStart: "2017-06-30T00:00Z", waitDuration: /[1-9]\\d+/ [true]', () => {
const filter = { dateStart: '2017-06-30T00:00Z', waitDuration: /[1-9]\d+/ };
const due = true;
const result = Helpers.testFilter(filter, json);
expect(result).equal(due);
});
});