[FIX] *: adapt QUnit tests and tours

[FIX] *: selectors in tours

[FIX][TMP] account: CogMenu selector in tours

[FIX][TMP] web*: Breadcrumb targetting in tours

Adds a `o_breadcrumb` class to target the whole breadcrumb, no matter
how much elements it contains (collapsed parts, visible path, single
name...).

add classname on last breadcrumb item

[FIX][TMP] project: View buttons selector in tours (moved away from CP)

[FIX][TMP] project: Kanban selectors in tours (quick create)

[FIX][TMP] *: SearchBar selectors in tours (toggle menu)

[FIX][TMP] *: ButtonBox selector in tours

[WIP][IMP] web: add toggleSearchBarMenu in search helpers

adapt and unskip 3 list tests

adapt and unskip calendar tests

unskip web_tour test that actually pass

post rebase fix

allow to lose cell focus after multi edition (given to searchbar) - bug reported, to check later

post rebase fixes

fix

Part-of: odoo/odoo#116641
This commit is contained in:
Pierre Paridans
2023-05-12 22:59:22 +02:00
parent 3aaa0bfff1
commit eef262abf4
112 changed files with 3673 additions and 2329 deletions
@@ -2,7 +2,6 @@
import { getFixture, patchDate, patchWithCleanup } from "@web/../tests/helpers/utils";
import { browser } from "@web/core/browser/browser";
import { ControlPanel } from "@web/search/control_panel/control_panel";
import {
getFacetTexts,
makeWithSearch,
@@ -12,6 +11,7 @@ import {
toggleFilterMenu,
toggleMenuItem,
toggleMenuItemOption,
DropDownMenusTestComponent,
} from "./helpers";
let target;
@@ -51,12 +51,12 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["filter", "comparison"],
searchViewId: false,
});
assert.containsOnce(target, ".dropdown.o_filter_menu");
assert.containsNone(target, ".dropdown.o_comparison_menu");
// assert.containsNone(target, ".dropdown.o_comparison_menu"); // TODO: Logic not mock in makeWithSearchs
await toggleFilterMenu(target);
await toggleMenuItem(target, "Birthday");
await toggleMenuItemOption(target, "Birthday", "January");
@@ -65,7 +65,7 @@ QUnit.module("Search", (hooks) => {
target
.querySelector("div.o_comparison_menu > button span")
.innerText.trim()
.toUpperCase() /** @todo why do I need to upperCase */,
.toUpperCase(),
"COMPARISON"
);
await toggleComparisonMenu(target);
@@ -87,7 +87,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["filter", "comparison"],
searchViewId: false,
});
@@ -106,7 +106,7 @@ QUnit.module("Search", (hooks) => {
await toggleComparisonMenu(target);
await toggleMenuItem(target, "Date: Previous Year");
assert.deepEqual(getFacetTexts(target), [
["Birthday: January 1997", "Date: December 1996"].join("or"),
["Birthday: January 1997", "Date: December 1996"].join("\nor\n"),
"Date: Previous Year",
]);
await toggleFilterMenu(target);
+14 -32
View File
@@ -1,10 +1,8 @@
/** @odoo-module **/
import { click, getFixture, mount, nextTick } from "@web/../tests/helpers/utils";
import { click, getFixture, nextTick } from "@web/../tests/helpers/utils";
import { ControlPanel } from "@web/search/control_panel/control_panel";
import { makeWithSearch, setupControlPanelServiceRegistry } from "./helpers";
import { Component, xml } from "@odoo/owl";
import { makeTestEnv } from "../helpers/mock_env";
let target;
let serverData;
@@ -39,16 +37,15 @@ QUnit.module("Search", (hooks) => {
searchMenuTypes: [],
});
assert.containsOnce(target, ".o_cp_top");
assert.containsOnce(target, ".o_cp_top_left");
assert.strictEqual(target.querySelector(".o_cp_top_right").innerHTML, "");
assert.containsOnce(target, ".o_cp_bottom");
assert.containsOnce(target, ".o_cp_bottom_left");
assert.containsOnce(target, ".o_cp_bottom_right");
assert.containsOnce(target, ".o_control_panel_breadcrumbs");
assert.containsOnce(target, ".o_control_panel_actions");
assert.strictEqual(target.querySelector(".o_control_panel_actions").innerHTML, "");
assert.containsOnce(target, ".o_control_panel_navigation");
assert.strictEqual(target.querySelector(".o_control_panel_navigation").innerHTML, "");
assert.containsNone(target, ".o_cp_switch_buttons");
assert.containsOnce(target, ".breadcrumb");
assert.containsOnce(target, ".o_breadcrumb");
});
QUnit.test("breadcrumbs", async (assert) => {
@@ -65,8 +62,9 @@ QUnit.module("Search", (hooks) => {
searchMenuTypes: [],
});
assert.containsN(target, ".breadcrumb li.breadcrumb-item", 2);
const breadcrumbItems = target.querySelectorAll("li.breadcrumb-item");
const breadcrumbsSelector = ".o_breadcrumb li.breadcrumb-item, .o_breadcrumb .active";
assert.containsN(target, breadcrumbsSelector, 2);
const breadcrumbItems = target.querySelectorAll(breadcrumbsSelector);
assert.strictEqual(breadcrumbItems[0].innerText, "Previous");
assert.hasClass(breadcrumbItems[1], "active");
assert.strictEqual(breadcrumbItems[1].innerText, "Current");
@@ -93,7 +91,10 @@ QUnit.module("Search", (hooks) => {
searchMenuTypes: [],
});
assert.containsOnce(target, ".o_cp_switch_buttons");
assert.containsOnce(
target,
".o_control_panel_navigation .d-xl-inline-flex.o_cp_switch_buttons"
);
assert.containsN(target, ".o_switch_view", 2);
const views = target.querySelectorAll(".o_switch_view");
@@ -134,23 +135,4 @@ QUnit.module("Search", (hooks) => {
await nextTick();
assert.containsNone(target, ".o_pager");
});
QUnit.test("control panel without bottom-right specifics", async (assert) => {
class CustomPage extends Component {}
CustomPage.components = { ControlPanel };
CustomPage.template = xml`
<ControlPanel display="{'top-right':false}">
<t t-set-slot="control-panel-bottom-right">
<div class="o_new_bottom_right">Something else</div>
</t>
</ControlPanel>
`;
// Minimal config, still needs at least an empty breadcrumbs to setup a control_panel
const env = await makeTestEnv();
Object.assign(env, { config: { breadcrumbs: [] } });
await mount(CustomPage, target, { env });
assert.containsOnce(target, ".o_new_bottom_right");
assert.containsNone(target, ".o_cp_switch_buttons");
assert.containsNone(target, ".o_pager");
});
});
@@ -3,7 +3,6 @@
import { getFixture, patchWithCleanup, triggerEvent } from "@web/../tests/helpers/utils";
import { browser } from "@web/core/browser/browser";
import { registry } from "@web/core/registry";
import { ControlPanel } from "@web/search/control_panel/control_panel";
import { FavoriteMenu } from "@web/search/favorite_menu/favorite_menu";
import { useSetupAction } from "@web/webclient/actions/action_hook";
import {
@@ -16,10 +15,12 @@ import {
setupControlPanelServiceRegistry,
toggleFavoriteMenu,
toggleSaveFavorite,
toggleSearchBarMenu,
validateSearch,
} from "./helpers";
import { Component, xml } from "@odoo/owl";
import { SearchBar } from "@web/search/search_bar/search_bar";
const serviceRegistry = registry.category("services");
/**
@@ -79,7 +80,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: ["favorite"],
searchViewId: false,
config: {
@@ -87,7 +88,7 @@ QUnit.module("Search", (hooks) => {
},
});
await toggleFavoriteMenu(target);
await toggleSearchBarMenu(target);
await toggleSaveFavorite(target);
assert.strictEqual(
target.querySelector('.o_add_favorite input[type="text"]').value,
@@ -107,12 +108,12 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: ["favorite"],
searchViewId: false,
});
await toggleFavoriteMenu(target);
await toggleSearchBarMenu(target);
await toggleSaveFavorite(target);
const checkboxes = target.querySelectorAll('input[type="checkbox"]');
@@ -211,8 +212,8 @@ QUnit.module("Search", (hooks) => {
}
},
resModel: "foo",
Component: ControlPanel,
searchMenuTypes: ["favorite"],
Component: SearchBar,
searchMenuTypes: ["filter", "favorite"],
searchViewId: false,
searchViewArch: `
<search>
@@ -224,7 +225,7 @@ QUnit.module("Search", (hooks) => {
assert.deepEqual(getFacetTexts(target), ["Filter"]);
await toggleFavoriteMenu(target);
await toggleSearchBarMenu(target);
await toggleSaveFavorite(target);
await editFavoriteName(target, "My favorite");
await saveFavorite(target);
@@ -245,7 +246,7 @@ QUnit.module("Search", (hooks) => {
}
},
resModel: "foo",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: ["favorite"],
searchViewId: false,
searchViewArch: `
@@ -262,7 +263,7 @@ QUnit.module("Search", (hooks) => {
assert.deepEqual(getFacetTexts(target), ["Foo\na"]);
await toggleFavoriteMenu(target);
await toggleSearchBarMenu(target);
await toggleSaveFavorite(target);
await editFavoriteName(target, "My favorite");
await saveFavorite(target);
@@ -312,7 +313,7 @@ QUnit.module("Search", (hooks) => {
}
},
resModel: "foo",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: ["favorite"],
searchViewId: false,
irFilters: [
@@ -328,7 +329,7 @@ QUnit.module("Search", (hooks) => {
],
});
await toggleFavoriteMenu(target);
await toggleSearchBarMenu(target);
await toggleSaveFavorite(target);
// first try: should fail
@@ -345,44 +346,47 @@ QUnit.module("Search", (hooks) => {
}
);
QUnit.test("undefined name for filter shows notification and not error", async function (assert) {
assert.expect(2);
QUnit.test(
"undefined name for filter shows notification and not error",
async function (assert) {
assert.expect(2);
serviceRegistry.add(
"notification",
{
start() {
return {
add(message, options) {
assert.strictEqual(
message,
"A name for your favorite filter is required.",
"The notification should match: A name for your favorite filter is required."
);
assert.deepEqual(options, { type: "danger" });
},
};
serviceRegistry.add(
"notification",
{
start() {
return {
add(message, options) {
assert.strictEqual(
message,
"A name for your favorite filter is required.",
"The notification should match: A name for your favorite filter is required."
);
assert.deepEqual(options, { type: "danger" });
},
};
},
},
},
{ force: true }
);
{ force: true }
);
await makeWithSearch({
serverData,
mockRPC: (_, args) => {
if (args.model === "ir.filters" && args.method === "create_or_replace") {
return 7; // fake serverSideId
}
},
resModel: "foo",
Component: FavoriteMenu,
searchViewId: false,
});
await makeWithSearch({
serverData,
mockRPC: (_, args) => {
if (args.model === "ir.filters" && args.method === "create_or_replace") {
return 7; // fake serverSideId
}
},
resModel: "foo",
Component: FavoriteMenu,
searchViewId: false,
});
await toggleFavoriteMenu(target);
await toggleSaveFavorite(target);
await saveFavorite(target);
});
await toggleFavoriteMenu(target);
await toggleSaveFavorite(target);
await saveFavorite(target);
}
);
QUnit.skip("save search filter in modal", async function (assert) {
/** @todo I don't know yet how to convert this test */
@@ -1,7 +1,6 @@
/** @odoo-module **/
import { browser } from "@web/core/browser/browser";
import { ControlPanel } from "@web/search/control_panel/control_panel";
import { getFixture, patchWithCleanup } from "../helpers/utils";
import {
applyGroup,
@@ -11,9 +10,10 @@ import {
makeWithSearch,
setupControlPanelServiceRegistry,
toggleAddCustomGroup,
toggleGroupByMenu,
toggleMenuItem,
toggleSearchBarMenu,
} from "./helpers";
import { SearchBar } from "@web/search/search_bar/search_bar";
let target;
let serverData;
@@ -52,12 +52,12 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: ["groupBy"],
searchViewId: false,
});
await toggleGroupByMenu(target);
await toggleSearchBarMenu(target);
const customGroupByItem = target.querySelector(".o_add_custom_group_menu");
assert.strictEqual(customGroupByItem.innerText.trim(), "Add Custom Group");
@@ -85,7 +85,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: ["groupBy"],
searchViewId: false,
searchViewFields: {
@@ -94,7 +94,7 @@ QUnit.module("Search", (hooks) => {
},
});
await toggleGroupByMenu(target);
await toggleSearchBarMenu(target);
await toggleAddCustomGroup(target);
assert.deepEqual(
@@ -116,7 +116,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: ["groupBy"],
searchViewId: false,
searchViewFields: {
@@ -130,7 +130,7 @@ QUnit.module("Search", (hooks) => {
},
});
await toggleGroupByMenu(target);
await toggleSearchBarMenu(target);
await toggleAddCustomGroup(target);
assert.deepEqual(
@@ -152,7 +152,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: ["groupBy"],
searchViewId: false,
searchViewFields: {
@@ -160,7 +160,7 @@ QUnit.module("Search", (hooks) => {
id: { sortable: true, string: "ID", type: "integer" },
},
});
await toggleGroupByMenu(target);
await toggleSearchBarMenu(target);
assert.deepEqual(controlPanel.env.searchModel.groupBy, []);
assert.containsNone(target, ".o_menu_item");
@@ -184,14 +184,14 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: ["groupBy"],
searchViewFields: {
date: { sortable: true, name: "date", string: "Super Date", type: "date" },
},
});
await toggleGroupByMenu(target);
await toggleSearchBarMenu(target);
const addCustomGroupMenu = target.querySelector(".o_add_custom_group_menu");
@@ -220,7 +220,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: ["groupBy"],
searchViewFields: {
candle_light: {
@@ -231,7 +231,7 @@ QUnit.module("Search", (hooks) => {
},
});
await toggleGroupByMenu(target);
await toggleSearchBarMenu(target);
await toggleAddCustomGroup(target);
await applyGroup(target);
@@ -3,7 +3,6 @@
import { click, getFixture, patchDate } from "@web/../tests/helpers/utils";
import { createWebClient, doAction } from "@web/../tests/webclient/helpers";
import { registry } from "@web/core/registry";
import { ControlPanel } from "@web/search/control_panel/control_panel";
import { FavoriteMenu } from "@web/search/favorite_menu/favorite_menu";
import { SearchBar } from "@web/search/search_bar/search_bar";
import {
@@ -16,6 +15,7 @@ import {
toggleComparisonMenu,
toggleFavoriteMenu,
toggleMenuItem,
DropDownMenusTestComponent,
} from "@web/../tests/search/helpers";
import { Component, onWillUpdateProps, xml } from "@odoo/owl";
@@ -28,6 +28,7 @@ function getDomain(comp) {
let serverData;
let target;
QUnit.module("Search", (hooks) => {
hooks.beforeEach(async () => {
target = getFixture();
@@ -64,7 +65,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["favorite"],
searchViewId: false,
config: {
@@ -97,7 +98,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["favorite"],
searchViewId: false,
config: {
@@ -208,7 +209,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["favorite"],
searchViewId: false,
irFilters: [
@@ -241,7 +242,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["filter", "groupBy", "comparison", "favorite"],
searchViewId: false,
irFilters: [
@@ -9,7 +9,6 @@ import {
patchWithCleanup,
} from "@web/../tests/helpers/utils";
import { browser } from "@web/core/browser/browser";
import { ControlPanel } from "@web/search/control_panel/control_panel";
import {
getFacetTexts,
isItemSelected,
@@ -20,6 +19,7 @@ import {
toggleFilterMenu,
toggleMenuItem,
toggleMenuItemOption,
DropDownMenusTestComponent,
} from "./helpers";
function getDomain(controlPanel) {
@@ -68,7 +68,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["filter"],
});
@@ -83,7 +83,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchViewId: false,
searchMenuTypes: ["filter"],
searchViewArch: `
@@ -109,7 +109,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchViewId: false,
searchMenuTypes: ["filter"],
searchViewArch: `
@@ -132,7 +132,7 @@ QUnit.module("Search", (hooks) => {
assert.deepEqual(getFacetTexts(target), ["Foo"]);
assert.containsOnce(
target.querySelector(".o_searchview .o_searchview_facet"),
"span.fa.fa-filter.o_searchview_facet_label"
".o_searchview_facet_label"
);
assert.ok(isItemSelected(target, "Foo"));
assert.deepEqual(getDomain(controlPanel), [["foo", "=", "qsdf"]]);
@@ -152,7 +152,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchViewId: false,
searchMenuTypes: ["filter"],
searchViewArch: `
@@ -382,7 +382,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchViewId: false,
searchMenuTypes: ["filter"],
searchViewArch: `
@@ -416,7 +416,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchViewId: false,
searchMenuTypes: ["filter"],
searchViewArch: `
@@ -443,7 +443,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchViewId: false,
searchMenuTypes: ["filter"],
searchViewArch: `
@@ -469,7 +469,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchViewId: false,
searchMenuTypes: ["filter"],
searchViewArch: `
@@ -493,7 +493,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchViewId: false,
searchMenuTypes: ["filter"],
searchViewArch: `
@@ -519,7 +519,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchViewId: false,
searchMenuTypes: ["filter"],
searchViewArch: `
@@ -547,7 +547,7 @@ QUnit.module("Search", (hooks) => {
assert.deepEqual(getFacetTexts(target), [
"Filter Group 1",
"Filter 1 Group 2orFilter 2 GROUP 2",
"Filter 1 Group 2\nor\nFilter 2 GROUP 2",
]);
});
@@ -557,7 +557,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchViewId: false,
searchMenuTypes: ["filter"],
searchViewArch: `
@@ -600,7 +600,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["filter"],
});
@@ -628,7 +628,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["filter"],
});
await toggleFilterMenu(target);
@@ -652,7 +652,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["filter"],
});
await toggleFilterMenu(target);
@@ -670,7 +670,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["filter"],
});
await toggleFilterMenu(target);
@@ -696,7 +696,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["filter"],
searchViewId: false,
searchViewArch: `
@@ -756,7 +756,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["filter"],
searchViewId: false,
searchViewArch: `<search />`,
@@ -781,7 +781,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["filter"],
searchViewId: false,
searchViewArch: `<search />`,
@@ -1,7 +1,6 @@
/** @odoo-module **/
import { browser } from "@web/core/browser/browser";
import { ControlPanel } from "@web/search/control_panel/control_panel";
import { getFixture, patchWithCleanup } from "../helpers/utils";
import {
getFacetTexts,
@@ -13,6 +12,7 @@ import {
toggleGroupByMenu,
toggleMenuItem,
toggleMenuItemOption,
DropDownMenusTestComponent,
} from "./helpers";
let target;
@@ -54,7 +54,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["groupBy"],
searchViewId: false,
searchViewFields: {},
@@ -74,7 +74,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["groupBy"],
searchViewId: false,
});
@@ -90,7 +90,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["groupBy"],
searchViewId: false,
searchViewArch: `
@@ -115,7 +115,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["groupBy"],
searchViewId: false,
searchViewArch: `
@@ -141,7 +141,7 @@ QUnit.module("Search", (hooks) => {
assert.deepEqual(getFacetTexts(target), ["Foo"]);
assert.containsOnce(
target.querySelector(".o_searchview .o_searchview_facet"),
"span.oi.oi-group.o_searchview_facet_label"
".o_searchview_facet_label"
);
assert.ok(isItemSelected(target, "Foo"));
@@ -158,7 +158,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["groupBy"],
searchViewId: false,
searchViewArch: `
@@ -184,7 +184,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["groupBy"],
searchViewId: false,
searchViewArch: `
@@ -218,7 +218,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["groupBy"],
searchViewId: false,
searchViewArch: `
@@ -245,19 +245,19 @@ QUnit.module("Search", (hooks) => {
const steps = [
{
description: "Year",
facetTexts: ["Date: Year>Date: Week"],
facetTexts: ["Date: Year\n>\nDate: Week"],
selectedoptions: ["Year", "Week"],
groupBy: ["date_field:year", "date_field:week"],
},
{
description: "Month",
facetTexts: ["Date: Year>Date: Month>Date: Week"],
facetTexts: ["Date: Year\n>\nDate: Month\n>\nDate: Week"],
selectedoptions: ["Year", "Month", "Week"],
groupBy: ["date_field:year", "date_field:month", "date_field:week"],
},
{
description: "Week",
facetTexts: ["Date: Year>Date: Month"],
facetTexts: ["Date: Year\n>\nDate: Month"],
selectedoptions: ["Year", "Month"],
groupBy: ["date_field:year", "date_field:month"],
},
@@ -286,7 +286,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["groupBy"],
searchViewId: false,
searchViewArch: `
@@ -309,43 +309,49 @@ QUnit.module("Search", (hooks) => {
// select option 'week'
await toggleMenuItemOption(target, "Date", "Week");
assert.deepEqual(getFacetTexts(target), ["Bar>Date: Week"]);
assert.deepEqual(getFacetTexts(target), ["Bar\n>\nDate: Week"]);
// select option 'day'
await toggleMenuItemOption(target, "Date", "Day");
assert.deepEqual(getFacetTexts(target), ["Bar>Date: Week>Date: Day"]);
assert.deepEqual(getFacetTexts(target), ["Bar\n>\nDate: Week\n>\nDate: Day"]);
// select option 'year'
await toggleMenuItemOption(target, "Date", "Year");
assert.deepEqual(getFacetTexts(target), ["Bar>Date: Year>Date: Week>Date: Day"]);
assert.deepEqual(getFacetTexts(target), [
"Bar\n>\nDate: Year\n>\nDate: Week\n>\nDate: Day",
]);
// select 'Foo'
await toggleMenuItem(target, "Foo");
assert.deepEqual(getFacetTexts(target), ["Bar>Date: Year>Date: Week>Date: Day>Foo"]);
assert.deepEqual(getFacetTexts(target), [
"Bar\n>\nDate: Year\n>\nDate: Week\n>\nDate: Day\n>\nFoo",
]);
// select option 'quarter'
await toggleMenuItem(target, "Date");
await toggleMenuItemOption(target, "Date", "Quarter");
assert.deepEqual(getFacetTexts(target), [
"Bar>Date: Year>Date: Quarter>Date: Week>Date: Day>Foo",
"Bar\n>\nDate: Year\n>\nDate: Quarter\n>\nDate: Week\n>\nDate: Day\n>\nFoo",
]);
// unselect 'Bar'
await toggleMenuItem(target, "Bar");
assert.deepEqual(getFacetTexts(target), [
"Date: Year>Date: Quarter>Date: Week>Date: Day>Foo",
"Date: Year\n>\nDate: Quarter\n>\nDate: Week\n>\nDate: Day\n>\nFoo",
]);
// unselect option 'week'
await toggleMenuItem(target, "Date");
await toggleMenuItemOption(target, "Date", "Week");
assert.deepEqual(getFacetTexts(target), ["Date: Year>Date: Quarter>Date: Day>Foo"]);
assert.deepEqual(getFacetTexts(target), [
"Date: Year\n>\nDate: Quarter\n>\nDate: Day\n>\nFoo",
]);
});
QUnit.test("default groupbys can be ordered", async function (assert) {
@@ -354,7 +360,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["groupBy"],
searchViewId: false,
searchViewArch: `
@@ -371,7 +377,7 @@ QUnit.module("Search", (hooks) => {
"date_field:week",
"birthday:month",
]);
assert.deepEqual(getFacetTexts(target), ["Date: Week>Birthday: Month"]);
assert.deepEqual(getFacetTexts(target), ["Date: Week\n>\nBirthday: Month"]);
});
QUnit.test("a separator in groupbys does not cause problems", async function (assert) {
@@ -380,7 +386,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["groupBy"],
searchViewId: false,
searchViewArch: `
@@ -407,7 +413,7 @@ QUnit.module("Search", (hooks) => {
assert.ok(isItemSelected(target, "Date"));
assert.ok(isItemSelected(target, "Bar"));
assert.ok(isOptionSelected(target, "Date", "Day"), "selected");
assert.deepEqual(getFacetTexts(target), ["Date: Day>Bar"]);
assert.deepEqual(getFacetTexts(target), ["Date: Day\n>\nBar"]);
await toggleMenuItemOption(target, "Date", "Quarter");
@@ -415,7 +421,7 @@ QUnit.module("Search", (hooks) => {
assert.ok(isItemSelected(target, "Bar"));
assert.ok(isOptionSelected(target, "Date", "Quarter"), "selected");
assert.ok(isOptionSelected(target, "Date", "Day"), "selected");
assert.deepEqual(getFacetTexts(target), ["Date: Quarter>Date: Day>Bar"]);
assert.deepEqual(getFacetTexts(target), ["Date: Quarter\n>\nDate: Day\n>\nBar"]);
await toggleMenuItem(target, "Bar");
await toggleMenuItem(target, "Date");
@@ -424,7 +430,7 @@ QUnit.module("Search", (hooks) => {
assert.notOk(isItemSelected(target, "Bar"));
assert.ok(isOptionSelected(target, "Date", "Quarter"), "selected");
assert.ok(isOptionSelected(target, "Date", "Day"), "selected");
assert.deepEqual(getFacetTexts(target), ["Date: Quarter>Date: Day"]);
assert.deepEqual(getFacetTexts(target), ["Date: Quarter\n>\nDate: Day"]);
await removeFacet(target);
@@ -445,7 +451,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchMenuTypes: ["groupBy"],
searchViewId: false,
searchViewArch: `
@@ -467,7 +473,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchViewId: false,
searchViewArch: `
<search>
@@ -490,7 +496,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchViewId: false,
searchViewArch: `
<search>
@@ -514,7 +520,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "foo",
Component: ControlPanel,
Component: DropDownMenusTestComponent,
searchViewId: false,
searchViewArch: `
<search>
+49 -6
View File
@@ -21,6 +21,11 @@ import { popoverService } from "@web/core/popover/popover_service";
import { registry } from "@web/core/registry";
import { CustomFavoriteItem } from "@web/search/favorite_menu/custom_favorite_item";
import { WithSearch } from "@web/search/with_search/with_search";
import { FilterMenu } from "@web/search/filter_menu/filter_menu";
import { GroupByMenu } from "@web/search/group_by_menu/group_by_menu";
import { ComparisonMenu } from "@web/search/comparison_menu/comparison_menu";
import { FavoriteMenu } from "@web/search/favorite_menu/favorite_menu";
import { SearchBar } from "@web/search/search_bar/search_bar";
import { getDefaultConfig } from "@web/views/view";
import { viewService } from "@web/views/view_service";
import { actionService } from "@web/webclient/actions/action_service";
@@ -196,7 +201,18 @@ export function getMenuItemTexts(target) {
}
export function getButtons(el) {
return [...el.querySelector(`div.o_cp_bottom div.o_cp_buttons`).children];
return [...el.querySelectorAll(`div.o_control_panel_breadcrumbs button`)];
}
export function getVisibleButtons(el) {
return [
...$(el).find(
[
"div.o_control_panel_breadcrumbs button:visible", // button in the breadcrumbs
"div.o_control_panel_actions button:visible", // buttons for list selection
].join(",")
),
];
}
/** Filter menu */
@@ -280,7 +296,7 @@ export async function applyGroup(el) {
}
export async function groupByMenu(el, fieldName) {
await toggleGroupByMenu(el);
await toggleSearchBarMenu(el);
await toggleAddCustomGroup(el);
await selectGroup(el, fieldName);
await applyGroup(el);
@@ -331,7 +347,7 @@ export function getFacetTexts(target) {
export async function removeFacet(el, facetFinder = 0) {
const facet = findItem(el, `div.o_searchview_facet`, facetFinder);
await click(facet.querySelector("i.o_facet_remove"));
await click(facet.querySelector(".o_facet_remove"));
}
export async function editSearch(el, value) {
@@ -384,7 +400,34 @@ export async function editPager(el, value) {
* @param {string} [menuFinder="Action"]
* @returns {Promise}
*/
export async function toggleActionMenu(el, menuFinder = "Action") {
const dropdown = findItem(el, `.o_cp_action_menus button`, menuFinder);
await click(dropdown);
export async function toggleActionMenu(el) {
await click(el.querySelector(".o_cp_action_menus .dropdown-toggle"));
}
/** SearchBarMenu */
export async function toggleSearchBarMenu(el) {
await click(findItem(el, `.o_searchview_dropdown_toggler`));
}
export class DropDownMenusTestComponent extends Component {
get components() {
const componentMapping = {
filter: FilterMenu,
groupBy: GroupByMenu,
comparison: ComparisonMenu,
favorite: FavoriteMenu,
};
return (
Array.from(this.env.searchModel.searchMenuTypes).map(
(comp) => componentMapping[comp]
) || []
);
}
}
DropDownMenusTestComponent.template = xml`
<SearchBar/>
<t t-foreach="components" t-as="component" t-key="component">
<t t-component="component"/>
</t>
`;
DropDownMenusTestComponent.components = { SearchBar };
File diff suppressed because it is too large Load Diff
@@ -1,6 +1,5 @@
/** @odoo-module **/
import { ControlPanel } from "@web/search/control_panel/control_panel";
import {
click,
getFixture,
@@ -9,7 +8,6 @@ import {
nextTick,
patchDate,
patchTimeZone,
patchWithCleanup,
triggerEvent,
} from "../helpers/utils";
import {
@@ -18,9 +16,8 @@ import {
makeWithSearch,
removeFacet,
setupControlPanelServiceRegistry,
toggleComparisonMenu,
toggleGroupByMenu,
toggleMenuItem,
toggleSearchBarMenu,
validateSearch,
} from "./helpers";
@@ -32,7 +29,8 @@ function getDomain(controlPanel) {
return controlPanel.env.searchModel.domain;
}
import { onWillUpdateProps } from "@odoo/owl";
import { Component, onWillUpdateProps, xml } from "@odoo/owl";
import { SearchBar } from "@web/search/search_bar/search_bar";
let target;
let serverData;
@@ -143,7 +141,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
});
@@ -161,7 +159,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: ["groupBy"],
searchViewId: false,
context: { search_default_date_group_by: 1 },
@@ -190,7 +188,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: ["groupBy"],
searchViewId: false,
context: {
@@ -236,7 +234,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
});
@@ -248,7 +246,7 @@ QUnit.module("Search", (hooks) => {
await triggerEvent(searchInput, null, "keydown", { key: "Enter" }); // select
assert.deepEqual(
getFacetTexts(target).map((str) => str.replace(/\s+/, " ")),
getFacetTexts(target).map((str) => str.replace(/\s+/g, " ")),
["Birthday 07/15/1983"],
"The format of the date in the facet should be in locale"
);
@@ -265,8 +263,8 @@ QUnit.module("Search", (hooks) => {
await triggerEvent(searchInput, null, "keydown", { key: "Enter" }); // select
assert.deepEqual(
getFacetTexts(target).map((str) => str.replace(/\s+/, " ")),
["Birth DateTime\n07/15/1983 00:00:00"],
getFacetTexts(target).map((str) => str.replace(/\s+/g, " ")),
["Birth DateTime 07/15/1983 00:00:00"],
"The format of the datetime in the facet should be in locale"
);
@@ -279,7 +277,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
searchViewArch: `
@@ -324,7 +322,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
});
@@ -352,19 +350,20 @@ QUnit.module("Search", (hooks) => {
assert.expect(8);
let updateCount = 0;
patchWithCleanup(ControlPanel.prototype, {
class TestComponent extends Component {
setup() {
this._super();
onWillUpdateProps(() => {
updateCount++;
});
},
});
}
}
TestComponent.template = xml`<SearchBar/>`;
TestComponent.components = { SearchBar };
const controlPanel = await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: TestComponent,
searchMenuTypes: [],
searchViewId: false,
});
@@ -378,8 +377,8 @@ QUnit.module("Search", (hooks) => {
await triggerEvent(searchInput, null, "keydown", { key: "Enter" });
assert.deepEqual(
getFacetTexts(target).map((str) => str.replace(/\s+/, "")),
["BarFirst record"]
getFacetTexts(target).map((str) => str.replace(/\s+/g, " ")),
["Bar First record"]
);
assert.strictEqual(updateCount, 1);
@@ -396,8 +395,8 @@ QUnit.module("Search", (hooks) => {
await triggerEvent(searchInput, null, "keydown", { key: "Enter" });
assert.deepEqual(
getFacetTexts(target).map((str) => str.replace(/\s+/, "")),
["BarFirst recordorSecond record"]
getFacetTexts(target).map((str) => str.replace(/\s+/g, " ")),
["Bar First record or Second record"]
);
assert.strictEqual(updateCount, 2);
@@ -410,19 +409,20 @@ QUnit.module("Search", (hooks) => {
assert.expect(2);
let updateCount = 0;
patchWithCleanup(ControlPanel.prototype, {
class TestComponent extends Component {
setup() {
this._super();
onWillUpdateProps(() => {
updateCount++;
});
},
});
}
}
TestComponent.template = xml`<SearchBar/>`;
TestComponent.components = { SearchBar };
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: TestComponent,
searchMenuTypes: [],
searchViewId: false,
});
@@ -440,7 +440,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
searchViewArch: `
@@ -487,7 +487,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
});
@@ -588,7 +588,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
});
@@ -610,7 +610,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
searchViewArch: `
@@ -647,7 +647,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
});
@@ -672,7 +672,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
searchViewArch: `
@@ -719,7 +719,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
searchViewArch: `
@@ -759,7 +759,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
searchViewArch: `
@@ -801,7 +801,7 @@ QUnit.module("Search", (hooks) => {
serverData,
mockRPC,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
searchViewArch: `
@@ -840,7 +840,7 @@ QUnit.module("Search", (hooks) => {
serverData,
mockRPC,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
searchViewArch: `
@@ -867,7 +867,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
searchViewArch: `
@@ -895,7 +895,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
searchViewArch: `
@@ -926,7 +926,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
searchViewArch: /*xml*/ `
@@ -989,7 +989,7 @@ QUnit.module("Search", (hooks) => {
serverData,
mockRPC,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
});
@@ -1029,18 +1029,18 @@ QUnit.module("Search", (hooks) => {
serverData,
mockRPC,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
context: { search_default_company: 1 },
});
await nextTick();
assert.containsNone(target, ".o_control_panel");
assert.containsNone(target, ".o_cp_searchview");
def.resolve();
await nextTick();
assert.containsOnce(target, ".o_control_panel");
assert.containsOnce(target, ".o_cp_searchview");
assert.strictEqual(getFacetTexts(target)[0].replace("\n", ""), "CompanyFirst record");
});
@@ -1050,7 +1050,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
searchViewArch: `
@@ -1147,7 +1147,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
searchViewArch: `
@@ -1211,7 +1211,7 @@ QUnit.module("Search", (hooks) => {
]);
// expand the selection properties
await click(target.querySelector(".o_control_panel"));
await click(target.querySelector(".o_cp_searchview"));
await editSearch(target, "a");
await click(target.querySelector(".o_expand"));
items = target.querySelectorAll(".o_searchview_input_container li");
@@ -1233,7 +1233,7 @@ QUnit.module("Search", (hooks) => {
assert.deepEqual(getDomain(controlPanel), expectedDomain);
// select the selection option "A"
await click(target.querySelector(".o_control_panel"));
await click(target.querySelector(".o_cp_searchview"));
await editSearch(target, "a");
await click(target.querySelector(".o_expand"));
await click(target.querySelector(".o_searchview_input_container li:nth-child(4)"));
@@ -1257,7 +1257,7 @@ QUnit.module("Search", (hooks) => {
await click(target.querySelector(".o_facet_remove"));
// search a many2one value
await click(target.querySelector(".o_control_panel"));
await click(target.querySelector(".o_cp_searchview"));
await editSearch(target, "Ali");
await click(target.querySelector(".o_expand"));
await click(target.querySelector("li:nth-child(2) .o_expand"));
@@ -1270,7 +1270,7 @@ QUnit.module("Search", (hooks) => {
assert.deepEqual(getDomain(controlPanel), expectedDomain);
// search a tag value
await click(target.querySelector(".o_control_panel"));
await click(target.querySelector(".o_cp_searchview"));
await editSearch(target, "A");
await click(target.querySelector(".o_expand"));
items = target.querySelectorAll(".o_searchview_input_container li");
@@ -1290,7 +1290,7 @@ QUnit.module("Search", (hooks) => {
];
assert.deepEqual(getDomain(controlPanel), expectedDomain);
// add the tag "B"
await click(target.querySelector(".o_control_panel"));
await click(target.querySelector(".o_cp_searchview"));
await editSearch(target, "B");
await click(target.querySelector(".o_expand"));
items = target.querySelectorAll(".o_searchview_input_container li");
@@ -1402,7 +1402,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: [],
searchViewId: false,
searchViewArch: `
@@ -1414,7 +1414,7 @@ QUnit.module("Search", (hooks) => {
context: { active_id: 2 },
});
await click(target.querySelector(".o_control_panel"));
await click(target.querySelector(".o_cp_searchview"));
await editSearch(target, "a");
await click(target.querySelector(".o_expand"));
@@ -1427,7 +1427,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: ["groupBy"], // we need it to have facet (see facets getter in search_model)
searchViewId: false,
searchViewArch: `
@@ -1490,7 +1490,7 @@ QUnit.module("Search", (hooks) => {
const controlPanel = await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchViewId: false,
searchViewArch: `
<search>
@@ -1527,7 +1527,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: ["groupBy"], // we need it to have facet (see facets getter in search_model)
searchViewId: false,
searchViewArch: `
@@ -1543,7 +1543,7 @@ QUnit.module("Search", (hooks) => {
".o_searchview_facet.o_facet_with_domain .o_searchview_facet_label"
);
await toggleGroupByMenu(target);
await toggleSearchBarMenu(target);
await toggleMenuItem(target, "Company");
assert.deepEqual(getFacetTexts(target), ["My favorite", "Company"]);
@@ -1562,7 +1562,7 @@ QUnit.module("Search", (hooks) => {
await click(target.querySelector(".modal footer button"));
assert.containsNone(target, ".modal");
assert.deepEqual(getFacetTexts(target), ["Bool>Company", 'Foo contains "abc"']);
assert.deepEqual(getFacetTexts(target), ["Bool\n>\nCompany", 'Foo contains "abc"']);
});
QUnit.test("edit a date filter with comparison active", async function (assert) {
@@ -1570,7 +1570,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchMenuTypes: ["filter", "comparison"],
searchViewId: false,
searchViewArch: `
@@ -1588,8 +1588,8 @@ QUnit.module("Search", (hooks) => {
".o_searchview_facet.o_facet_with_domain .o_searchview_facet_label"
);
await toggleComparisonMenu(target);
await toggleMenuItem(target);
await toggleSearchBarMenu(target);
await toggleMenuItem(target, "Birthday: Previous Period");
assert.deepEqual(getFacetTexts(target), [
"Birthday: April 2023",
@@ -1628,7 +1628,7 @@ QUnit.module("Search", (hooks) => {
await makeWithSearch({
serverData,
resModel: "partner",
Component: ControlPanel,
Component: SearchBar,
searchViewId: false,
searchViewArch: `
<search>
@@ -1650,7 +1650,7 @@ QUnit.module("Search", (hooks) => {
await triggerEvent(searchInput, null, "keydown", { key: "ArrowDown" });
await triggerEvent(searchInput, null, "keydown", { key: "Enter" }); // select
assert.deepEqual(getFacetTexts(target), ["Foo\nabcordef"]);
assert.deepEqual(getFacetTexts(target), ["Foo\nabc\nor\ndef"]);
await click(target, ".o_facet_with_domain .o_searchview_facet_label");
assert.containsN(target, ".o_domain_leaf", 2);