diff --git a/addons/web/static/tests/core/checkbox_tests.js b/addons/web/static/tests/core/checkbox_tests.js index d3b967b5c89..020ebac0557 100644 --- a/addons/web/static/tests/core/checkbox_tests.js +++ b/addons/web/static/tests/core/checkbox_tests.js @@ -69,22 +69,16 @@ QUnit.module("Components", (hooks) => { assert.strictEqual(value, false); }); - QUnit.test("does not call onChange prop when disabled", async (assert) => { + QUnit.test("checkbox with props disabled", async (assert) => { const env = await makeTestEnv(); - let onChangeCalled = false; - class Parent extends Component { - onChange(checked) { - onChangeCalled = true; - } - } + class Parent extends Component {} Parent.template = xml``; Parent.components = { CheckBox }; await mount(Parent, target, { env }); assert.containsOnce(target, ".o-checkbox input"); - await click(target.querySelector("input")); - assert.strictEqual(onChangeCalled, false); + assert.ok(target.querySelector(".o-checkbox input").disabled); }); QUnit.test("can toggle value by pressing ENTER", async (assert) => { diff --git a/addons/web/static/tests/core/pager_tests.js b/addons/web/static/tests/core/pager_tests.js index 1e327678ac9..b3bd2899301 100644 --- a/addons/web/static/tests/core/pager_tests.js +++ b/addons/web/static/tests/core/pager_tests.js @@ -183,8 +183,6 @@ QUnit.module("Components", ({ beforeEach }) => { }); QUnit.test("pager disabling", async function (assert) { - assert.expect(9); - const reloadPromise = makeDeferred(); const pager = await makePager({ @@ -203,9 +201,9 @@ QUnit.module("Components", ({ beforeEach }) => { }); const pagerButtons = target.querySelectorAll("button"); - // Click twice - await click(target.querySelector(`.o_pager button.o_pager_next`)); + // Click and check button is disabled await click(target.querySelector(`.o_pager button.o_pager_next`)); + assert.ok(target.querySelector(`.o_pager button.o_pager_next`).disabled); // Try to edit the pager value await click(target, ".o_pager_value"); diff --git a/addons/web/static/tests/helpers/utils.js b/addons/web/static/tests/helpers/utils.js index b9a30c739c9..14664263ae2 100644 --- a/addons/web/static/tests/helpers/utils.js +++ b/addons/web/static/tests/helpers/utils.js @@ -446,6 +446,9 @@ export async function triggerScroll( } export function click(el, selector, skipVisibilityCheck = false) { + if (el.disabled) { + throw new Error("Can't click on a disabled button"); + } return triggerEvents( el, selector, diff --git a/addons/web/static/tests/views/fields/many2one_field_tests.js b/addons/web/static/tests/views/fields/many2one_field_tests.js index cc01710a6bb..84ab854dc70 100644 --- a/addons/web/static/tests/views/fields/many2one_field_tests.js +++ b/addons/web/static/tests/views/fields/many2one_field_tests.js @@ -2557,9 +2557,7 @@ QUnit.module("Fields", (hooks) => { await click(buttons[0]); assert.verifySteps(["action"]); - - await click(buttons[1]); - assert.verifySteps([]); // the second button is disabled, it can't be clicked + assert.ok(buttons[1].disabled); def.resolve(); await nextTick(); diff --git a/addons/web/static/tests/views/fields/one2many_field_tests.js b/addons/web/static/tests/views/fields/one2many_field_tests.js index 53486d9ae87..7652ea657b4 100644 --- a/addons/web/static/tests/views/fields/one2many_field_tests.js +++ b/addons/web/static/tests/views/fields/one2many_field_tests.js @@ -12042,7 +12042,6 @@ QUnit.module("Fields", (hooks) => { assert.strictEqual(target.querySelector(".o_data_cell").innerText, "leonardo"); - await click(target.querySelector(".o_field_widget[name=turtles] .o_pager_next")); await click(target.querySelector(".o_field_widget[name=turtles] .o_pager_next")); assert.ok(target.querySelector(".o_field_widget[name=turtles] .o_pager_next").disabled); diff --git a/addons/web/static/tests/views/form/form_view_tests.js b/addons/web/static/tests/views/form/form_view_tests.js index 449975e8be9..1c5a85c22ac 100644 --- a/addons/web/static/tests/views/form/form_view_tests.js +++ b/addons/web/static/tests/views/form/form_view_tests.js @@ -9688,7 +9688,8 @@ QUnit.module("Views", (hooks) => { click(target.querySelector(".modal-footer button.btn-primary")); await Promise.resolve(); - await click(target.querySelector(".modal-footer button.btn-primary")); + assert.ok(target.querySelector(".modal-footer button.btn-primary").disabled); + await nextTick(); assert.verifySteps(["create", "web_read", "execute_action"]); }); @@ -10557,7 +10558,7 @@ QUnit.module("Views", (hooks) => { assert.strictEqual( target.querySelector('.o-tooltip--technical > li[data-item="invisible"]').lastChild .textContent, - 'product_id == 33', + "product_id == 33", "invisible should be properly stringified" ); @@ -11172,10 +11173,9 @@ QUnit.module("Views", (hooks) => { resId: 2, }); + assert.ok(target.querySelector(".o_form_view button.mybutton").disabled); await click(target.querySelector(".o_form_view .o_content button.btn-primary")); assert.verifySteps(["doActionButton"]); - await click(target.querySelector(".o_form_view button.mybutton")); - assert.verifySteps([]); } ); @@ -13780,7 +13780,9 @@ QUnit.module("Views", (hooks) => { QUnit.test("containing a nested x2many list view should not overflow", async function (assert) { serverData.models.partner_type.records.push({ - id: 3, display_name: 'very'.repeat(30) + '_long_name', color: 10, + id: 3, + display_name: "very".repeat(30) + "_long_name", + color: 10, }); const record = serverData.models.partner.records[0]; @@ -13809,11 +13811,11 @@ QUnit.module("Views", (hooks) => { `, }); - const table = target.querySelector('table'); - const group = target.querySelector('.o_inner_group:last-child'); + const table = target.querySelector("table"); + const group = target.querySelector(".o_inner_group:last-child"); assert.equal(group.clientWidth, group.scrollWidth); - table.style.tableLayout = 'auto'; + table.style.tableLayout = "auto"; assert.ok(group.clientWidth < group.scrollWidth); }); }); diff --git a/addons/web/static/tests/views/kanban/kanban_view_tests.js b/addons/web/static/tests/views/kanban/kanban_view_tests.js index 8eb61142545..80e03bb276b 100644 --- a/addons/web/static/tests/views/kanban/kanban_view_tests.js +++ b/addons/web/static/tests/views/kanban/kanban_view_tests.js @@ -8217,7 +8217,8 @@ QUnit.module("Views", (hooks) => { }, }); click(target.querySelector("button.a1")); - await click(target.querySelector("button.a1")); + assert.ok(target.querySelector("button.a1").disabled); + await nextTick(); assert.strictEqual(count, 1, "should have triggered an execute action only once"); assert.verifySteps( diff --git a/addons/web/static/tests/views/list_view_tests.js b/addons/web/static/tests/views/list_view_tests.js index babbdde5b76..8e9761a9c99 100644 --- a/addons/web/static/tests/views/list_view_tests.js +++ b/addons/web/static/tests/views/list_view_tests.js @@ -11056,9 +11056,9 @@ QUnit.module("Views", (hooks) => { assert.containsN(target, ".o_data_row", 4, "should contain 4 records"); - // click on Add twice, and delay the onchange - click($(".o_list_button_add:visible").get(0)); + // click on Add and delay the onchange (check that the button is correctly disabled) click($(".o_list_button_add:visible").get(0)); + assert.ok($(".o_list_button_add:visible").get(0).disabled); prom.resolve(); await nextTick();