Files
admin-web/src/modules/appointment-calendar/workNavigation.test.ts
T

14 lines
1.3 KiB
TypeScript

import { expect, it } from 'vitest'
import { appointmentExternalTarget, appointmentReturnQuery, appointmentReturnTarget } from './workNavigation'
it('preserves the item, prerequisite stack, global scope and page through an external action', () => {
const target = appointmentExternalTarget('/overseas-master-data/trips/TR-001?tab=loading', { workAnchor: '2026-10-15', workItem: 'work:1', workOrigins: '["work:0"]', workScope: 'global', workView: 'UNDATED', workPage: '3' })
expect(target.path).toBe('/overseas-master-data/trips/TR-001'); expect(target.query.tab).toBe('loading')
const back = appointmentReturnTarget(target.query)!
const query = new URL(back, 'https://appointment.invalid').searchParams
expect(query.get('workOrigins')).toBe('["work:0"]'); expect(query.get('workPage')).toBe('3'); expect(query.get('workView')).toBe('UNDATED')
expect(appointmentReturnQuery(target.query)).toEqual({ appointmentReturn: back })
})
it.each(['https://example.com/appointment-calendar?workItem=1', '//example.com/appointment-calendar?workItem=1', '/other?workItem=1', '/appointment-calendar/../other?x=1', '/appointment-calendar?x=1#fragment'])('rejects an unrelated return destination %s', value => {
expect(appointmentReturnTarget({ appointmentReturn: value })).toBeNull()
})