diff --git a/addons/web/static/src/views/kanban/progress_bar_hook.js b/addons/web/static/src/views/kanban/progress_bar_hook.js index b4ffb2ddd0e..a6d155cc876 100644 --- a/addons/web/static/src/views/kanban/progress_bar_hook.js +++ b/addons/web/static/src/views/kanban/progress_bar_hook.js @@ -338,7 +338,7 @@ export function useProgressBar(progressAttributes, model, aggregateFields, activ return progressBarState.loadProgressBar(component.props); }); onWillUpdateProps((nextProps) => { - return progressBarState.loadProgressBar(nextProps); + progressBarState.loadProgressBar(nextProps); }); return reactive(progressBarState); 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 095e71a9dae..3dcb56a9022 100644 --- a/addons/web/static/tests/views/kanban/kanban_view_tests.js +++ b/addons/web/static/tests/views/kanban/kanban_view_tests.js @@ -26,6 +26,7 @@ import { pagerNext, toggleSearchBarMenu, validateSearch, + toggleMenuItem, } from "@web/../tests/search/helpers"; import { makeView, setupViewRegistries } from "@web/../tests/views/helpers"; import { createWebClient, doAction } from "@web/../tests/webclient/helpers"; @@ -10904,7 +10905,7 @@ QUnit.module("Views", (hooks) => { QUnit.test( "keyboard navigation on kanban when the focus is on a link that " + - "has an action and the kanban has no oe_kanban_global_... class", + "has an action and the kanban has no oe_kanban_global_... class", async (assert) => { await makeView({ type: "kanban", @@ -13534,7 +13535,7 @@ QUnit.module("Views", (hooks) => { MyField.template = xml``; registry.category("fields").add("my_field", { component: MyField }); - serverData.models.partner.onchanges = { product_id: () => {} }; + serverData.models.partner.onchanges = { product_id: () => { } }; await makeView({ type: "kanban", @@ -13883,6 +13884,88 @@ QUnit.module("Views", (hooks) => { } ); + + QUnit.test("searchbar filters are displayed directly", async (assert) => { + let def; + await makeView({ + type: "kanban", + resModel: "partner", + serverData, + arch: ` + + + + +
+
+
+
`, + searchViewArch: ` + + + `, + async mockRPC(route, args) { + if (args.method === "web_search_read") { + await def; + } + }, + }); + + assert.deepEqual(getFacetTexts(target), []); + + // toggle a filter, and slow down the web_search_read rpc + def = makeDeferred(); + await toggleSearchBarMenu(target); + await toggleMenuItem(target, "Some Filter"); + assert.deepEqual(getFacetTexts(target), ["Some Filter"]); + + def.resolve(); + await nextTick(); + assert.deepEqual(getFacetTexts(target), ["Some Filter"]); + }); + + QUnit.test("searchbar filters are displayed directly (with progressbar)", async (assert) => { + let def; + await makeView({ + type: "kanban", + resModel: "partner", + serverData, + arch: ` + + + + + +
+
+
+
`, + groupBy: ["int_field"], + searchViewArch: ` + + + `, + async mockRPC(route, args) { + if (args.method === "read_progress_bar") { + await def; + } + }, + }); + + assert.deepEqual(getFacetTexts(target), []); + + // toggle a filter, and slow down the read_progress_bar rpc + def = makeDeferred(); + await toggleSearchBarMenu(target); + await toggleMenuItem(target, "Some Filter"); + + assert.deepEqual(getFacetTexts(target), ["Some Filter"]); + + def.resolve(); + await nextTick(); + assert.deepEqual(getFacetTexts(target), ["Some Filter"]); + }); + QUnit.test("group by properties and drag and drop", async (assert) => { assert.expect(10);