HM-48. Внедрена система тестирования jest (#17)
This commit is contained in:
@ -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();
|
||||
}
|
||||
|
||||
56
src/utils/__test__/urlUtils.test.js
Normal file
56
src/utils/__test__/urlUtils.test.js
Normal 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
11
src/utils/urlUtils.js
Normal 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}` : '');
|
||||
};
|
||||
Reference in New Issue
Block a user