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 = { 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 = { 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 = { 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 = { contractNoIn: '出库,入库,load' } applyContractSideQueryParams(params, { selected: ['出库', '入库', 'load'] }) assert.equal(params.stopKindIn, 'load') assert.equal(params.contractNoIn, '出库,入库') }) })