77 lines
3.3 KiB
TypeScript
77 lines
3.3 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
||
|
||
import { runAddressDecomposeStage } from "../src/services/address_runtime/decomposeStage";
|
||
|
||
describe("inventory root frame follow-up", () => {
|
||
it("restores the root inventory frame for a temporal patch after drilldown", () => {
|
||
const result = runAddressDecomposeStage("а на май 2020", {
|
||
previous_intent: "inventory_purchase_provenance_for_item",
|
||
previous_filters: {
|
||
item: "Кресло орион",
|
||
organization: "альтернатива",
|
||
counterparty: "альтернатива",
|
||
as_of_date: "2020-03-31",
|
||
period_from: "2020-03-01",
|
||
period_to: "2020-03-31"
|
||
},
|
||
previous_anchor_type: "item",
|
||
previous_anchor_value: "Кресло орион",
|
||
root_intent: "inventory_on_hand_as_of_date",
|
||
root_filters: {
|
||
organization: "альтернатива",
|
||
counterparty: "альтернатива",
|
||
as_of_date: "2020-03-31",
|
||
period_from: "2020-03-01",
|
||
period_to: "2020-03-31"
|
||
},
|
||
root_anchor_type: "organization",
|
||
root_anchor_value: "ООО \\Альтернатива Плюс\\",
|
||
current_frame_kind: "inventory_drilldown"
|
||
});
|
||
|
||
expect(result).not.toBeNull();
|
||
expect(result?.intent.intent).toBe("inventory_on_hand_as_of_date");
|
||
expect(result?.baseReasons).toContain("intent_restored_to_inventory_root_frame");
|
||
expect(result?.filters.extracted_filters.item).toBeUndefined();
|
||
expect(result?.filters.extracted_filters.organization).toBe("альтернатива");
|
||
expect(result?.filters.extracted_filters.counterparty).toBe("альтернатива");
|
||
expect(result?.filters.extracted_filters.period_from).toBe("2020-05-01");
|
||
expect(result?.filters.extracted_filters.period_to).toBe("2020-05-31");
|
||
expect(result?.filters.extracted_filters.as_of_date).toBe("2020-05-31");
|
||
});
|
||
|
||
it("derives a relative month from the root frame year", () => {
|
||
const result = runAddressDecomposeStage("а на май этого же года", {
|
||
previous_intent: "inventory_purchase_provenance_for_item",
|
||
previous_filters: {
|
||
item: "Кресло орион",
|
||
organization: "альтернатива",
|
||
counterparty: "альтернатива",
|
||
as_of_date: "2020-03-31",
|
||
period_from: "2020-03-01",
|
||
period_to: "2020-03-31"
|
||
},
|
||
previous_anchor_type: "item",
|
||
previous_anchor_value: "Кресло орион",
|
||
root_intent: "inventory_on_hand_as_of_date",
|
||
root_filters: {
|
||
organization: "альтернатива",
|
||
counterparty: "альтернатива",
|
||
as_of_date: "2020-03-31",
|
||
period_from: "2020-03-01",
|
||
period_to: "2020-03-31"
|
||
},
|
||
root_anchor_type: "organization",
|
||
root_anchor_value: "ООО \\Альтернатива Плюс\\",
|
||
current_frame_kind: "inventory_drilldown"
|
||
});
|
||
|
||
expect(result).not.toBeNull();
|
||
expect(result?.intent.intent).toBe("inventory_on_hand_as_of_date");
|
||
expect(result?.filters.extracted_filters.period_from).toBe("2020-05-01");
|
||
expect(result?.filters.extracted_filters.period_to).toBe("2020-05-31");
|
||
expect(result?.filters.extracted_filters.as_of_date).toBe("2020-05-31");
|
||
expect(result?.baseReasons).toContain("period_derived_from_inventory_root_frame_year");
|
||
});
|
||
});
|