This commit is contained in:
@@ -2,6 +2,7 @@ import {
|
||||
IRoute,
|
||||
navigate,
|
||||
navigateToRequestLink,
|
||||
newRequestLinkUrl,
|
||||
parseRoute,
|
||||
persistOwnStatus,
|
||||
persistOwnTab,
|
||||
@@ -96,6 +97,65 @@ describe('parseRoute', () => {
|
||||
it('открытая заявка имеет приоритет над предзаполнением', () => {
|
||||
expect(parseRoute('?rpmode=approve&rptype=hire&rpid=42&rpsource=15').mode).toBe('approve');
|
||||
});
|
||||
|
||||
it('rpmode=create + rptype без rpsource — пустая новая форма без предзаполнения', () => {
|
||||
expect(parseRoute('?rpmode=create&rptype=hire')).toEqual({
|
||||
mode: 'create',
|
||||
nav: 'new',
|
||||
formKey: 'hire',
|
||||
});
|
||||
});
|
||||
|
||||
it('rptype БЕЗ rpmode — тоже пустая новая форма (buildQuery для create его не пишет)', () => {
|
||||
expect(parseRoute('?rptype=hire')).toEqual({
|
||||
mode: 'create',
|
||||
nav: 'new',
|
||||
formKey: 'hire',
|
||||
});
|
||||
});
|
||||
|
||||
it('rpmode=create без rptype не открывает пустую форму — остаётся обычная подача', () => {
|
||||
expect(parseRoute('?rpmode=create').mode).toBe('submit');
|
||||
});
|
||||
|
||||
it('внешняя ссылка ТМЦ: rptype + positionId + nomenclatureId + storeName прокидываются в create', () => {
|
||||
expect(parseRoute('?rptype=wh-tmc-transfer&positionId=00d31059-1f52-11ec-a738-3cecef292546&nomenclatureId=abc-123&storeName=Склад%20№1')).toEqual({
|
||||
mode: 'create',
|
||||
nav: 'new',
|
||||
formKey: 'wh-tmc-transfer',
|
||||
positionId: '00d31059-1f52-11ec-a738-3cecef292546',
|
||||
nomenclatureId: 'abc-123',
|
||||
storeName: 'Склад №1',
|
||||
});
|
||||
});
|
||||
|
||||
it('positionId/nomenclatureId без rptype игнорируются — обычная подача', () => {
|
||||
// Внешние параметры имеют смысл только при открытии формы (rptype); сами по
|
||||
// себе не должны влиять на маршрут.
|
||||
expect(parseRoute('?positionId=x&nomenclatureId=y').mode).toBe('submit');
|
||||
});
|
||||
|
||||
it('rpmode=create + rptype + rpsource — предзаполнение важнее пустой формы', () => {
|
||||
expect(parseRoute('?rpmode=create&rptype=hire&rpsource=15')).toEqual({
|
||||
mode: 'create',
|
||||
nav: 'new',
|
||||
formKey: 'hire',
|
||||
sourceId: 15,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('newRequestLinkUrl', () => {
|
||||
it('строит абсолютную ссылку на пустую форму без rpsource', () => {
|
||||
const url = newRequestLinkUrl('hire');
|
||||
expect(url).toBe(`${window.location.origin}${window.location.pathname}?rpmode=create&rptype=hire`);
|
||||
});
|
||||
|
||||
it('ссылка на пустую форму разбирается обратно в тот же маршрут', () => {
|
||||
const url = newRequestLinkUrl('hire');
|
||||
const route = parseRoute(new URL(url).search);
|
||||
expect(route).toEqual({ mode: 'create', nav: 'new', formKey: 'hire' });
|
||||
});
|
||||
});
|
||||
|
||||
describe('подвкладки и фильтр «Моих заявок»', () => {
|
||||
|
||||
Reference in New Issue
Block a user