Files
enterprise-addons/pos_iot_six/static/tests/unit/pos_iot_six.test.js
T

48 lines
1.8 KiB
JavaScript

import { expect, test } from "@odoo/hoot";
import { definePosModels } from "@point_of_sale/../tests/unit/data/generate_model_definitions";
import { getFilledOrder, setupPosEnv } from "@point_of_sale/../tests/unit/utils";
import { PaymentScreen } from "@point_of_sale/app/screens/payment_screen/payment_screen";
import { mountWithCleanup, onRpc, patchWithCleanup } from "@web/../tests/web_test_helpers";
definePosModels();
test("pos_iot_payment_six", async () => {
onRpc("/hw_drivers/action", () => true);
onRpc("/iot_drivers/event", () => true);
patchWithCleanup(console, { log: () => {} });
// Fonts
onRpc("/css", () => "");
onRpc("/fonts/*", () => "");
onRpc("/web/static/*", () => "");
const store = await setupPosEnv();
const order = await getFilledOrder(store);
const sixPm = store.models["pos.payment.method"].find(
(pm) => pm.use_payment_terminal === "six_iot"
);
const pmScreen = await mountWithCleanup(PaymentScreen, {
props: { orderUuid: order.uuid },
});
await pmScreen.addNewPaymentLine(sixPm);
const pmLine = order.payment_ids.at(-1);
expect(store.paymentTerminalInProgress).toBe(true);
expect(sixPm.payment_terminal.terminal.iotId).toBe(2);
const paymentData = sixPm.payment_terminal.getPaymentData(pmLine.uuid);
expect(paymentData.amount).toBe(Math.round(pmLine.amount * 100));
expect(paymentData.cid).toBe(pmLine.uuid);
const line = sixPm.payment_terminal.getPaymentLineForMessage(order, {
cid: pmLine.uuid,
owner: store.env.services.iot_longpolling._session_id,
});
expect(!line).toBeEmpty();
expect(line.amount).toBe(pmLine.amount);
expect(pmLine.payment_status).toBe("waiting");
await sixPm.payment_terminal._resolvePayment(true);
expect(pmLine.payment_status).toBe("done");
});