66 lines
3.2 KiB
TypeScript
66 lines
3.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
||
import { runAddressDecomposeStage } from "../src/services/address_runtime/decomposeStage";
|
||
|
||
describe("inventory root frame regressions", () => {
|
||
it("restores inventory root frame for restatement on the same period after foreign domain drift", () => {
|
||
const result = runAddressDecomposeStage(
|
||
"ладно ок. покажи мне еще раз позиции на складе на тот же период рассмотрения",
|
||
{
|
||
previous_intent: "customer_revenue_and_payments",
|
||
previous_filters: {
|
||
organization: "ООО \\Альтернатива Плюс\\"
|
||
},
|
||
previous_anchor_type: "organization",
|
||
previous_anchor_value: "ООО \\Альтернатива Плюс\\",
|
||
root_intent: "inventory_on_hand_as_of_date",
|
||
root_filters: {
|
||
organization: "ООО \\Альтернатива Плюс\\",
|
||
period_from: "2022-02-01",
|
||
period_to: "2022-02-28",
|
||
as_of_date: "2022-02-28"
|
||
},
|
||
root_anchor_type: "organization",
|
||
root_anchor_value: "ООО \\Альтернатива Плюс\\",
|
||
current_frame_kind: "generic"
|
||
}
|
||
);
|
||
|
||
expect(result).not.toBeNull();
|
||
expect(result?.intent.intent).toBe("inventory_on_hand_as_of_date");
|
||
expect(result?.intent.reasons).toContain("intent_restored_to_inventory_root_frame");
|
||
expect(result?.filters.extracted_filters.organization).toBe("ООО \\Альтернатива Плюс\\");
|
||
expect(result?.filters.extracted_filters.period_from).toBe("2022-02-01");
|
||
expect(result?.filters.extracted_filters.period_to).toBe("2022-02-28");
|
||
expect(result?.filters.extracted_filters.as_of_date).toBe("2022-02-28");
|
||
expect(result?.filters.warnings).toContain("period_from_from_followup_context");
|
||
expect(result?.filters.warnings).toContain("period_to_from_followup_context");
|
||
});
|
||
|
||
it("promotes selected-object provenance slang with 'где мы взяли это' into inventory provenance", () => {
|
||
const result = runAddressDecomposeStage(
|
||
'По выбранному объекту "Зеркало для инвалидов поворотное травмобезопасное": где мы взяли это говнище?',
|
||
{
|
||
previous_intent: "inventory_on_hand_as_of_date",
|
||
previous_filters: {
|
||
organization: "ООО \\Альтернатива Плюс\\",
|
||
warehouse: "Основной склад",
|
||
period_from: "2022-02-01",
|
||
period_to: "2022-02-28",
|
||
as_of_date: "2022-02-28"
|
||
},
|
||
previous_anchor_type: "unknown",
|
||
previous_anchor_value: null
|
||
}
|
||
);
|
||
|
||
expect(result).not.toBeNull();
|
||
expect(result?.intent.intent).toBe("inventory_purchase_provenance_for_item");
|
||
expect(result?.filters.extracted_filters.item).toBe("Зеркало для инвалидов поворотное травмобезопасное");
|
||
expect(result?.filters.extracted_filters.as_of_date).toBe("2022-02-28");
|
||
expect(
|
||
result?.baseReasons?.includes("intent_adjusted_to_inventory_followup_context") ||
|
||
result?.intent.reasons.includes("inventory_selected_object_provenance_signal_detected")
|
||
).toBe(true);
|
||
});
|
||
});
|