Files
admin-web/src/modules/overseas-master-data/inquiryNavigation.test.ts
T

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()
})