import { defineMailModels } from "@mail/../tests/mail_test_helpers"; import { expect, test } from "@odoo/hoot"; import { contains, defineModels, fields, models, mountView } from "@web/../tests/web_test_helpers"; class Quant extends models.Model { quantity = fields.Float(); inventory_quantity = fields.Float({ string: "Counted quantity", onChange: (quant) => { quant.inventory_diff_quantity = quant.inventory_quantity - quant.quantity; }, }); inventory_quantity_set = fields.Boolean({ string: "Inventory quantity set", }); inventory_diff_quantity = fields.Float({ string: "Difference" }); _records = [{ id: 1, quantity: 50 }]; } defineModels([Quant]); defineMailModels(); test("Test changing the inventory quantity with the widget", async function () { await mountView({ type: "list", resModel: "quant", arch: ` `, }); await contains("td.o_counted_quantity_widget_cell").click(); await contains("td.o_counted_quantity_widget_cell input").edit("23"); await contains("td[name=inventory_diff_quantity]").click(); expect("td[name=inventory_diff_quantity] div input").toHaveValue(-27); expect("td[name=inventory_quantity_set] div input").toBeChecked(); await contains("td.o_counted_quantity_widget_cell").click(); await contains("td.o_counted_quantity_widget_cell input").edit("40.5"); await contains("td[name=inventory_diff_quantity]").click(); expect("td[name=inventory_diff_quantity] div input").toHaveValue(-9.5); }); test("Test setting the inventory quantity to its default value of 0", async function () { await mountView({ type: "list", resModel: "quant", arch: ` `, }); await contains("td.o_counted_quantity_widget_cell").click(); await contains("td.o_counted_quantity_widget_cell input").edit("0"); await contains("td[name=inventory_diff_quantity]").click(); expect("td[name=inventory_diff_quantity] div input").toHaveValue(-50); });