Files
LWLT-AIBOT/control-plane/test/hotel-update-selection.test.ts
2026-09-11 21:22:14 +08:00

42 lines
2.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import assert from 'node:assert/strict';
import test from 'node:test';
import { parseProgramInput } from '../src/program-parser.js';
const input = `安排酒店变更
团号:LW-TEST-HOTEL
入住日期:2026-09-15
离店日期:2026-09-16
酒店搜索:测试酒店twn
间数:9`;
const receivedAt = '2026-09-11T08:50:12Z';
test('dated hotel replacement parses old dates separately from the new resource and count', async () => {
const result = await parseProgramInput({ rawText: input, receivedAt });
assert.equal(result.status, 'agent_parse_passed', JSON.stringify(result));
assert.equal(result.business_route_id, 'arrangement_hotel_update');
assert.deepEqual((result.operation?.data as any).arrangement, {
mode: 'update', selection: { start_date: '2026-09-15', end_date: '2026-09-16' },
changes: { resource: { name: '测试酒店twn', keyword: '测试酒店twn' }, room_count: 9 }
});
});
test('hotel replacement rejects missing dates, invalid count, reversed dates and mixed update styles', async () => {
for (const rawText of [
input.replace('入住日期:2026-09-15\n', ''),
input.replace('离店日期:2026-09-16\n', ''),
input.replace('间数:9', '间数:0'),
input.replace('离店日期:2026-09-16', '离店日期:2026-09-14'),
`${input}\n目标变更:离店日期改为2026-09-18`
]) {
const result = await parseProgramInput({ rawText, receivedAt });
assert.notEqual(result.status, 'agent_parse_passed', JSON.stringify(result));
assert.equal(result.operation, null);
}
});
test('legacy hotel departure and count changes remain supported', async () => {
const result = await parseProgramInput({ rawText: '安排变更\n团号:LW-TEST-HOTEL\n目标变更:离店日期改为2026-09-18房间数改为9\n安排类型:酒店', receivedAt });
assert.equal(result.status, 'agent_parse_passed', JSON.stringify(result));
assert.deepEqual((result.operation?.data as any).arrangement, { mode: 'update', changes: { end_date: '2026-09-18', room_count: 9 } });
});