17 lines
1.4 KiB
TypeScript
17 lines
1.4 KiB
TypeScript
import { expect, it } from 'vitest'
|
|||
|
|
import { inquiryReturnTarget, inquirySourceQuery, inquiryOrderTarget } from './inquiryNavigation'
|
||
|
|
import type { CapacityInquiry } from './capacityOfferTypes'
|
||
|
|
|
||
|
|
it('returns only to a fixed internal inquiry route and rejects malformed or repeated values', () => {
|
||
|
|
expect(inquiryReturnTarget(inquirySourceQuery({ offerNo: 'FO-1', bookingNo: 'FB-2' }))).toEqual({ name: 'overseas-master-data-capacity-offer-detail', params: { offerNo: 'FO-1' }, query: { inquiry: 'FB-2' } })
|
||
|
|
for (const value of ['https://example.com', '../FB-2', ['FB-2'], '', null]) expect(inquiryReturnTarget({ fleetSource: 'inquiry', fleetOfferNo: 'FO-1', fleetBookingNo: value })).toBeNull()
|
||
|
|
expect(inquiryReturnTarget({ returnTo: 'https://example.com' })).toBeNull()
|
||
|
|
})
|
||
|
|
it.each(['US_TRUCK', 'LOCAL_LOOSEBOARD'] as const)('opens %s using only its list permission and the business number', businessType => {
|
||
|
|
const row = { businessType, businessOrderNo: 'ORDER-1', offerNo: 'FO-1', bookingNo: 'FB-2' } as CapacityInquiry
|
||
|
|
const domain = businessType === 'US_TRUCK' ? 'truck' : 'looseboard'
|
||
|
|
expect(inquiryOrderTarget(row, permission => permission === `platform:overseas-business:${domain}:list`)).toMatchObject({ query: { orderNo: 'ORDER-1', fleetBookingNo: 'FB-2' } })
|
||
|
|
expect(inquiryOrderTarget(row, permission => permission.endsWith(':edit'))).toBeNull()
|
||
|
|
expect(inquiryOrderTarget({ ...row, businessOrderNo: null }, () => true)).toBeNull()
|
||
|
|
})
|