HM-48. Внедрена система тестирования jest (#17)

This commit is contained in:
Nikolay
2020-07-17 20:34:56 +03:00
committed by GitHub
parent 3691e393c6
commit d93b1b33c8
6 changed files with 273 additions and 15 deletions

View File

@ -1,5 +1,6 @@
import EmitService from './EmitService';
import {parse, stringify} from 'querystring';
import {parse} from 'querystring';
import {makeUrlWithQuery} from '../utils/urlUtils';
/**
* @function RouterListener
@ -73,8 +74,7 @@ class RouteService extends EmitService {
* // Это создаст строку в url - site.ru/users?key=testApi&author=Petrov
*/
goTo = (url, query) => {
const stringQuery = stringify(query);
const urlWithQuery = url + (stringQuery ? `?${stringQuery}` : '');
const urlWithQuery = makeUrlWithQuery(url, query);
this.history.pushState({}, '', urlWithQuery);
this.generateNext();
}

View File

@ -0,0 +1,56 @@
import {makeUrlWithQuery} from '../urlUtils';
describe('Проверка функции makeUrlWithQuery', () => {
it('Передача корректного маршрута без query', () => {
const url = '/store';
const result = makeUrlWithQuery(url);
expect(result)
.toBe('/store');
});
it('Передача корректного маршрута с query', () => {
const url = '/store';
const query = {
string: 'string',
number: 45,
boolean: false,
emptyString: '',
object: {arg1: 'arg1', arg2: 2},
emptyObject: {},
array: ['toy', 67],
emptyArray: [],
undefined: undefined,
null: null,
nan: NaN,
infinity: Infinity,
zero: 0,
};
const result = makeUrlWithQuery(url, query);
expect(result)
.toBe('/store?string=string&number=45&boolean=false&emptyString=&object=&emptyObject=&array=toy&array=67&undefined=&null=&nan=&infinity=&zero=0');
});
it('Передача корректного маршрута с пустым query', () => {
const url = '/store';
const query = {};
const result = makeUrlWithQuery(url, query);
expect(result)
.toBe('/store');
});
it('Передача корректного маршрута с query равным undefined', () => {
const url = '/store';
const result = makeUrlWithQuery(url, undefined);
expect(result)
.toBe('/store');
});
it('Передача маршрута undefined с query', () => {
const query = {
key: 'string'
};
const result = makeUrlWithQuery(undefined, query);
expect(result)
.toBe('?key=string');
});
});

11
src/utils/urlUtils.js Normal file
View File

@ -0,0 +1,11 @@
import {stringify} from 'querystring';
/**
* Из маршрута и объекта query создает строку для url
* @param {string} url - маршрут
* @param {Object<string, string>} query - объект с данными
*/
export const makeUrlWithQuery = (url = '', query = {}) => {
const stringQuery = stringify(query);
return url + (stringQuery ? `?${stringQuery}` : '');
};