57 lines
2.3 KiB
TypeScript
57 lines
2.3 KiB
TypeScript
import assert from 'node:assert/strict'
|
|
import { describe, it } from 'node:test'
|
|
import {
|
|
applyContractSideQueryParams,
|
|
selectedContractStopKinds
|
|
} from './pl-plan-pair-list-query.ts'
|
|
|
|
describe('selectedContractStopKinds', () => {
|
|
it('returns single side when only 供 or 需 is selected', () => {
|
|
assert.deepEqual(selectedContractStopKinds({ selected: ['load'] }), ['load'])
|
|
assert.deepEqual(selectedContractStopKinds({ selected: ['delivery'] }), ['delivery'])
|
|
})
|
|
|
|
it('returns null when both sides or neither are selected', () => {
|
|
assert.equal(selectedContractStopKinds({ selected: ['load', 'delivery'] }), null)
|
|
assert.equal(selectedContractStopKinds({ selected: [] }), null)
|
|
assert.equal(selectedContractStopKinds(null), null)
|
|
})
|
|
|
|
it('ignores contract numbers mixed into selected', () => {
|
|
assert.deepEqual(
|
|
selectedContractStopKinds({ selected: ['HT-001', 'load'] }),
|
|
['load']
|
|
)
|
|
})
|
|
})
|
|
|
|
describe('applyContractSideQueryParams', () => {
|
|
it('sets stopKindIn and strips side tokens from contractNoIn', () => {
|
|
const params: Record<string, any> = { contractNoIn: 'HT-001,load' }
|
|
applyContractSideQueryParams(params, { selected: ['HT-001', 'load'] })
|
|
assert.equal(params.stopKindIn, 'load')
|
|
assert.equal(params.contractNoIn, 'HT-001')
|
|
})
|
|
|
|
it('removes contractNoIn when it only contained side tokens', () => {
|
|
const params: Record<string, any> = { contractNoIn: 'delivery' }
|
|
applyContractSideQueryParams(params, { selected: ['delivery'] })
|
|
assert.equal(params.stopKindIn, 'delivery')
|
|
assert.equal(params.contractNoIn, undefined)
|
|
})
|
|
|
|
it('does not set stopKindIn when both sides are selected', () => {
|
|
const params: Record<string, any> = { contractNoIn: 'HT-001,load,delivery' }
|
|
applyContractSideQueryParams(params, { selected: ['HT-001', 'load', 'delivery'] })
|
|
assert.equal(params.stopKindIn, undefined)
|
|
assert.equal(params.contractNoIn, 'HT-001')
|
|
})
|
|
|
|
it('keeps 入库/出库 tokens in contractNoIn for server placeholder filter', () => {
|
|
const params: Record<string, any> = { contractNoIn: '出库,入库,load' }
|
|
applyContractSideQueryParams(params, { selected: ['出库', '入库', 'load'] })
|
|
assert.equal(params.stopKindIn, 'load')
|
|
assert.equal(params.contractNoIn, '出库,入库')
|
|
})
|
|
})
|