feat: доработал заявку перемещение тмц
Tests / frontend-test (push) Successful in 4m45s

This commit is contained in:
Тимур Городецкий
2026-09-10 11:19:16 +05:00
parent c5958c3348
commit 11eb127764
17 changed files with 429 additions and 15 deletions
@@ -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('подвкладки и фильтр «Моих заявок»', () => {