feat(flight-finder): implement milestone M2 - report workflow and delivery gates
This commit is contained in:
46
skills/flight-finder/tests/search-orchestration.test.ts
Normal file
46
skills/flight-finder/tests/search-orchestration.test.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import test from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
|
||||
import {
|
||||
DFW_BLQ_2026_PROMPT_DRAFT,
|
||||
normalizeFlightReportRequest
|
||||
} from "../src/request-normalizer.js";
|
||||
import {
|
||||
VPN_CONNECT_TIMEOUT_MS,
|
||||
VPN_DISCONNECT_TIMEOUT_MS,
|
||||
buildFlightSearchPlan
|
||||
} from "../src/search-orchestration.js";
|
||||
|
||||
test("buildFlightSearchPlan activates VPN only when marketCountry is explicit", () => {
|
||||
const request = normalizeFlightReportRequest(DFW_BLQ_2026_PROMPT_DRAFT).request;
|
||||
const plan = buildFlightSearchPlan(request);
|
||||
|
||||
assert.equal(plan.vpn.enabled, true);
|
||||
assert.equal(plan.vpn.marketCountry, "TH");
|
||||
assert.equal(plan.vpn.connectTimeoutMs, VPN_CONNECT_TIMEOUT_MS);
|
||||
assert.equal(plan.vpn.disconnectTimeoutMs, VPN_DISCONNECT_TIMEOUT_MS);
|
||||
});
|
||||
|
||||
test("buildFlightSearchPlan keeps airline-direct best-effort when degraded", () => {
|
||||
const request = normalizeFlightReportRequest({
|
||||
...DFW_BLQ_2026_PROMPT_DRAFT,
|
||||
preferences: {
|
||||
...DFW_BLQ_2026_PROMPT_DRAFT.preferences,
|
||||
marketCountry: null
|
||||
}
|
||||
}).request;
|
||||
const plan = buildFlightSearchPlan(request, [
|
||||
{
|
||||
source: "airline-direct",
|
||||
status: "degraded",
|
||||
checkedAt: "2026-03-30T21:00:00Z",
|
||||
notes: ["Direct booking shell loads but search completion is unreliable."]
|
||||
}
|
||||
]);
|
||||
|
||||
assert.equal(plan.vpn.enabled, false);
|
||||
const directSource = plan.sourceOrder.find((entry) => entry.source === "airline-direct");
|
||||
assert.equal(directSource?.enabled, true);
|
||||
assert.equal(directSource?.required, false);
|
||||
assert.match(plan.degradedReasons.join(" "), /airline-direct/i);
|
||||
});
|
||||
Reference in New Issue
Block a user