NODEDC_1C/llm_normalizer/backend/tests/addressInventorySelectedObj...

95 lines
4.1 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 { afterEach, describe, expect, it, vi } from "vitest";
const { executeAddressMcpQueryMock } = vi.hoisted(() => ({
executeAddressMcpQueryMock: vi.fn()
}));
vi.mock("../src/services/addressMcpClient", async () => {
const actual = await vi.importActual<typeof import("../src/services/addressMcpClient")>(
"../src/services/addressMcpClient"
);
return {
...actual,
executeAddressMcpQuery: executeAddressMcpQueryMock
};
});
import { AddressQueryService } from "../src/services/addressQueryService";
afterEach(() => {
executeAddressMcpQueryMock.mockReset();
vi.restoreAllMocks();
});
describe("inventory selected-object follow-up", () => {
it("auto-broadens dated stock follow-up window for inventory provenance", async () => {
executeAddressMcpQueryMock
.mockResolvedValueOnce({
fetched_rows: 1,
matched_rows: 1,
raw_rows: [
{
Period: "2021-03-09T00:00:00Z",
Registrator: "Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00",
AccountDt: "41.01",
AccountKt: "60.01",
Amount: 442075,
SubcontoDt1: "Рабочая станция универсального специалиста с угловым элементом.",
SubcontoDt3: "Основной склад",
SubcontoKt1: "АСТРА",
SubcontoKt2: "А_03/2021 от 01.03.2021г.",
Organization: "ООО \\Альтернатива Плюс\\"
}
],
rows: [],
error: null
})
.mockResolvedValueOnce({
fetched_rows: 2,
matched_rows: 2,
raw_rows: [
{
Period: "2020-02-11T00:00:00Z",
Registrator: "Поступление товаров и услуг 00000000077 от 11.02.2020 0:00:00",
AccountDt: "41.01",
AccountKt: "60.01",
Amount: 165.83,
SubcontoDt1: "Кромка с клеем 33 альмандин 137 м",
SubcontoDt3: "Основной склад",
SubcontoKt1: "Торговый дом \\Союз МСК\\",
SubcontoKt2: "Договор поставки № 12 от 01.02.2020",
Organization: "ООО \\Альтернатива Плюс\\"
},
{
Period: "2020-02-11T00:00:00Z",
Registrator: "Поступление товаров и услуг 00000000077 от 11.02.2020 0:00:00",
AccountDt: "41.01",
AccountKt: "60.01",
Amount: 165.83,
SubcontoDt1: "Кромка с клеем 33 дуб ниагара 137 м",
SubcontoDt3: "Основной склад",
SubcontoKt1: "Торговый дом \\Союз МСК\\",
SubcontoKt2: "Договор поставки № 12 от 01.02.2020",
Organization: "ООО \\Альтернатива Плюс\\"
}
],
rows: [],
error: null
});
const service = new AddressQueryService();
const result = await service.tryHandle(
'По выбранному объекту "Кромка с клеем 33 альмандин 137 м | склад: Основной склад | количество: 1,000 | стоимость: 165,83 ₽ | организация: ООО \\\\Альтернатива Плюс\\\\ | дата строки: 2021-03-31T23:59:59Z": От какого поставщика куплен товар'
);
expect(result?.handled).toBe(true);
expect(result?.response_type).toBe("FACTUAL_SUMMARY");
expect(result?.debug.detected_intent).toBe("inventory_purchase_provenance_for_item");
expect(result?.debug.extracted_filters?.item).toBe("Кромка с клеем 33 альмандин 137 м");
expect(result?.debug.reasons).toContain("period_window_auto_broadened_to_available_data");
expect(result?.debug.limitations).toContain("period_window_auto_broadened_to_available_data");
expect(String(result?.reply_text ?? "")).toContain("Торговый дом \\Союз МСК\\");
expect(executeAddressMcpQueryMock).toHaveBeenCalledTimes(2);
});
});