diff --git a/addons/crm/static/tests/forecast_view_tests.js b/addons/crm/static/tests/forecast_view_tests.js
index 9910f2b47b6..a6b0fdeb3fa 100644
--- a/addons/crm/static/tests/forecast_view_tests.js
+++ b/addons/crm/static/tests/forecast_view_tests.js
@@ -91,7 +91,7 @@ QUnit.module("Views", (hooks) => {
[],
];
- const forecastGraph = await makeView({
+ await makeView({
resModel: "foo",
type: "graph",
serverData,
@@ -108,16 +108,16 @@ QUnit.module("Views", (hooks) => {
},
});
- await toggleGroupByMenu(forecastGraph);
- await toggleMenuItem(forecastGraph, "Bar");
+ await toggleGroupByMenu(target);
+ await toggleMenuItem(target, "Bar");
- await toggleMenuItem(forecastGraph, "Date Field");
- await toggleMenuItemOption(forecastGraph, "Date Field", "Quarter");
+ await toggleMenuItem(target, "Date Field");
+ await toggleMenuItemOption(target, "Date Field", "Quarter");
- await toggleMenuItemOption(forecastGraph, "Date Field", "Year");
+ await toggleMenuItemOption(target, "Date Field", "Year");
- await toggleFilterMenu(forecastGraph);
- await toggleMenuItem(forecastGraph, "Forecast Filter");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "Forecast Filter");
unpatchDate();
});
diff --git a/addons/project/static/tests/burndown_chart_tests.js b/addons/project/static/tests/burndown_chart_tests.js
index ce4529a83c4..5c8e13cbc31 100644
--- a/addons/project/static/tests/burndown_chart_tests.js
+++ b/addons/project/static/tests/burndown_chart_tests.js
@@ -1,6 +1,6 @@
/** @odoo-module */
-import { click } from "@web/../tests/helpers/utils";
+import { click, getFixture } from "@web/../tests/helpers/utils";
import { COLORS, hexToRGBA } from "@web/views/graph/colors";
import { dialogService } from "@web/core/dialog/dialog_service";
import { getGraphRenderer } from "@web/../tests/views/graph_view_tests";
@@ -12,7 +12,9 @@ const serviceRegistry = registry.category("services");
QUnit.module("Project", {}, () => {
QUnit.module("Views", (hooks) => {
let serverData;
+ let target;
hooks.beforeEach(async () => {
+ target = getFixture();
serverData = {
models: {
burndown_chart: {
@@ -110,8 +112,8 @@ QUnit.module("Project", {}, () => {
type: "burndown_chart",
});
assert.ok(burndownChart.model.metaData.stacked, "graph should be a burndown chart.");
- assert.containsOnce(burndownChart, `button.o_graph_button[data-tooltip="Stacked"]`);
- const stackButton = burndownChart.el.querySelector(`button.o_graph_button[data-tooltip="Stacked"]`);
+ assert.containsOnce(target, `button.o_graph_button[data-tooltip="Stacked"]`);
+ const stackButton = target.querySelector(`button.o_graph_button[data-tooltip="Stacked"]`);
await click(stackButton);
assert.notOk(burndownChart.model.metaData.stacked, "graph should be a classic line chart.");
});
@@ -125,7 +127,7 @@ QUnit.module("Project", {}, () => {
type: "burndown_chart",
});
- const stackButton = burndownChart.el.querySelector(`button.o_graph_button[data-tooltip="Stacked"]`);
+ const stackButton = target.querySelector(`button.o_graph_button[data-tooltip="Stacked"]`);
await click(stackButton);
assert.notOk(burndownChart.model.metaData.stacked, "graph should be a classic line chart.");
diff --git a/addons/web/static/src/core/utils/scrolling.js b/addons/web/static/src/core/utils/scrolling.js
index 282cf7bc836..3a828973e60 100644
--- a/addons/web/static/src/core/utils/scrolling.js
+++ b/addons/web/static/src/core/utils/scrolling.js
@@ -46,54 +46,3 @@ export function scrollTo(element, options = { scrollable: null, isAnchor: false
}
}
}
-
-/*
- * Returns the main scrollable element relevant in a context of an action.
- * In desktop, the relevant element is the .o_content of the action.
- * In mobile, it is the html node itself, provided no other children is scrollable
- * Most of the times in mobile, we don't want to scroll individual elements, so every bit
- * of code should enforce that html is the scrollable element.
- *
- * @param {Component} The action component.
- * @return {Element}
- */
-function getScrollableElement(component) {
- if (component.env.isSmall) {
- return document.firstElementChild; // aka html node;
- } else {
- return component.el.querySelector(".o_action_manager .o_content");
- }
-}
-
-/**
- * Retrieves the current top and left scroll position. By default, the scrolling
- * area is the '.o_content' main div. In mobile, it is the body.
- *
- * @param {Component} an action Component containing an .o_content scrollable
- * area.
- */
-export function getScrollPosition(component) {
- const scrollingEl = getScrollableElement(component);
- return {
- left: scrollingEl ? scrollingEl.scrollLeft : 0,
- top: scrollingEl ? scrollingEl.scrollTop : 0,
- };
-}
-
-/**
- * Sets top and left scroll positions to the given values. By default, the
- * scrolling area is the '.o_content' main div. In mobile, it is the body.
- *
- * @param {Component} an action Component containing an .o_content scrollable
- * area.
- * @param {Object} offset
- * @param {number} [offset.left=0]
- * @param {number} [offset.top=0]
- */
-export function setScrollPosition(component, offset) {
- const scrollingEl = getScrollableElement(component);
- if (scrollingEl) {
- scrollingEl.scrollLeft = offset.left || 0;
- scrollingEl.scrollTop = offset.top || 0;
- }
-}
diff --git a/addons/web/static/src/legacy/action_adapters.js b/addons/web/static/src/legacy/action_adapters.js
index bf1c5e3fc5c..0adfc09c1dd 100644
--- a/addons/web/static/src/legacy/action_adapters.js
+++ b/addons/web/static/src/legacy/action_adapters.js
@@ -10,7 +10,7 @@ import { useService } from "@web/core/utils/hooks";
import { ViewNotFoundError } from "../webclient/actions/action_service";
import { cleanDomFromBootstrap, wrapSuccessOrFail, useLegacyRefs } from "./utils";
import { mapDoActionOptionAPI } from "./backend_utils";
-import { setScrollPosition } from "@web/core/utils/scrolling";
+import { setScrollPosition } from "@web/webclient/actions/scrolling";
const {
Component,
@@ -90,7 +90,7 @@ class ActionAdapter extends ComponentAdapter {
});
this.onScrollTo = (payload) => {
- setScrollPosition(this, { left: payload.left, top: payload.top });
+ setScrollPosition(this.wowlEnv, { left: payload.left, top: payload.top });
};
}
diff --git a/addons/web/static/src/views/graph/graph_view.js b/addons/web/static/src/views/graph/graph_view.js
index 7bca90d6e7e..b345b2c8150 100644
--- a/addons/web/static/src/views/graph/graph_view.js
+++ b/addons/web/static/src/views/graph/graph_view.js
@@ -13,11 +13,11 @@ import { useModel } from "../helpers/model";
import { GraphArchParser } from "./graph_arch_parser";
import { GraphModel } from "./graph_model";
import { GraphRenderer } from "./graph_renderer";
-import { LegacyComponent } from "@web/legacy/legacy_component";
const viewRegistry = registry.category("views");
+const { Component } = owl;
-export class GraphView extends LegacyComponent {
+export class GraphView extends Component {
setup() {
this.actionService = useService("action");
diff --git a/addons/web/static/src/views/pivot/pivot_view.js b/addons/web/static/src/views/pivot/pivot_view.js
index b56fd1a8906..1ba40c972a3 100644
--- a/addons/web/static/src/views/pivot/pivot_view.js
+++ b/addons/web/static/src/views/pivot/pivot_view.js
@@ -13,11 +13,11 @@ import { Layout } from "@web/views/layout";
import { PivotArchParser } from "@web/views/pivot/pivot_arch_parser";
import { PivotModel } from "@web/views/pivot/pivot_model";
import { PivotRenderer } from "@web/views/pivot/pivot_renderer";
-import { LegacyComponent } from "@web/legacy/legacy_component";
const viewRegistry = registry.category("views");
+const { Component } = owl;
-export class PivotView extends LegacyComponent {
+export class PivotView extends Component {
setup() {
this.actionService = useService("action");
diff --git a/addons/web/static/src/webclient/actions/action_hook.js b/addons/web/static/src/webclient/actions/action_hook.js
index e2dff9e7319..1c6e79e0dce 100644
--- a/addons/web/static/src/webclient/actions/action_hook.js
+++ b/addons/web/static/src/webclient/actions/action_hook.js
@@ -1,6 +1,6 @@
/** @odoo-module **/
-import { getScrollPosition, setScrollPosition } from "@web/core/utils/scrolling";
+import { getScrollPosition, setScrollPosition } from "./scrolling";
const { useComponent, useEffect } = owl;
@@ -75,7 +75,7 @@ export function useSetupAction(params = {}) {
if (__getLocalState__) {
useCallbackRecorder(__getLocalState__, () => {
const state = {};
- state[scrollSymbol] = getScrollPosition(component);
+ state[scrollSymbol] = getScrollPosition(component.env);
if (params.getLocalState) {
Object.assign(state, params.getLocalState());
}
@@ -89,7 +89,7 @@ export function useSetupAction(params = {}) {
useEffect(
() => {
if (component.props.state && component.props.state[scrollSymbol]) {
- setScrollPosition(component, component.props.state[scrollSymbol]);
+ setScrollPosition(component.env, component.props.state[scrollSymbol]);
}
},
() => []
diff --git a/addons/web/static/src/webclient/actions/scrolling.js b/addons/web/static/src/webclient/actions/scrolling.js
new file mode 100644
index 00000000000..9a8ca4c5116
--- /dev/null
+++ b/addons/web/static/src/webclient/actions/scrolling.js
@@ -0,0 +1,50 @@
+/** @odoo-module **/
+
+/*
+ * Returns the main scrollable element relevant in a context of an action.
+ * In desktop, the relevant element is the .o_content of the action.
+ * In mobile, it is the html node itself, provided no other children is scrollable
+ * Most of the times in mobile, we don't want to scroll individual elements, so every bit
+ * of code should enforce that html is the scrollable element.
+ *
+ * @param {OdooEnv} env
+ * @return {Element}
+ */
+function getScrollableElement(env) {
+ if (env.isSmall) {
+ return document.firstElementChild; // aka html node;
+ } else {
+ return document.querySelector(".o_web_client > .o_action_manager > .o_action > .o_content");
+ }
+}
+
+/**
+ * Retrieves the current top and left scroll position. By default, the scrolling
+ * area is the '.o_content' main div. In mobile, it is the body.
+ *
+ * @param {OdooEnv} env
+ */
+export function getScrollPosition(env) {
+ const scrollingEl = getScrollableElement(env);
+ return {
+ left: scrollingEl ? scrollingEl.scrollLeft : 0,
+ top: scrollingEl ? scrollingEl.scrollTop : 0,
+ };
+}
+
+/**
+ * Sets top and left scroll positions to the given values. By default, the
+ * scrolling area is the '.o_content' main div. In mobile, it is the body.
+ *
+ * @param {OdooEnv} env
+ * @param {Object} offset
+ * @param {number} [offset.left=0]
+ * @param {number} [offset.top=0]
+ */
+export function setScrollPosition(env, offset) {
+ const scrollingEl = getScrollableElement(env);
+ if (scrollingEl) {
+ scrollingEl.scrollLeft = offset.left || 0;
+ scrollingEl.scrollTop = offset.top || 0;
+ }
+}
diff --git a/addons/web/static/tests/views/graph_view_tests.js b/addons/web/static/tests/views/graph_view_tests.js
index 1ec96dc96f5..f5e90d70a9b 100644
--- a/addons/web/static/tests/views/graph_view_tests.js
+++ b/addons/web/static/tests/views/graph_view_tests.js
@@ -106,16 +106,16 @@ function checkTooltip(assert, graph, expectedTooltipContent, index, datasetIndex
lineLabels.push(line.label);
lineValues.push(`${line.value}`);
}
- assert.containsOnce(graph, "div.o_graph_custom_tooltip");
- const tooltipTitle = graph.el.querySelector("table thead tr th.o_measure");
+ assert.containsOnce(target, "div.o_graph_custom_tooltip");
+ const tooltipTitle = target.querySelector("table thead tr th.o_measure");
assert.strictEqual(tooltipTitle.innerText, title || "Count", `Tooltip title`);
assert.deepEqual(
- [...graph.el.querySelectorAll("table tbody tr td span.o_label")].map((td) => td.innerText),
+ [...target.querySelectorAll("table tbody tr td span.o_label")].map((td) => td.innerText),
lineLabels,
`Tooltip line labels`
);
assert.deepEqual(
- [...graph.el.querySelectorAll("table tbody tr td.o_value")].map((td) => td.innerText),
+ [...target.querySelectorAll("table tbody tr td.o_value")].map((td) => td.innerText),
lineValues,
`Tooltip line values`
);
@@ -132,7 +132,7 @@ async function selectMode(el, mode) {
function checkModeIs(assert, graph, mode) {
assert.strictEqual(getGraphModelMetaData(graph).mode, mode);
assert.strictEqual(getChart(graph).config.type, mode);
- assert.hasClass(getModeButton(graph.el, mode), "active");
+ assert.hasClass(getModeButton(target, mode), "active");
}
function getXAxeLabel(graph) {
@@ -155,6 +155,7 @@ async function clickOnDataset(graph) {
}
let serverData;
+let target;
QUnit.module("Views", (hooks) => {
hooks.beforeEach(async () => {
serverData = {
@@ -300,6 +301,8 @@ QUnit.module("Views", (hooks) => {
setupControlPanelFavoriteMenuRegistry();
serviceRegistry.add("dialog", dialogService);
patchWithCleanup(browser, { setTimeout: (fn) => fn() });
+
+ target = getFixture();
});
QUnit.module("GraphView");
@@ -307,8 +310,8 @@ QUnit.module("Views", (hooks) => {
QUnit.test("simple bar chart rendering", async function (assert) {
const graph = await makeView({ serverData, type: "graph", resModel: "foo" });
const { measure, mode, order, stacked } = getGraphModelMetaData(graph);
- assert.hasClass(graph.el, "o_action o_view_controller");
- assert.containsOnce(graph, "div.o_graph_canvas_container canvas");
+ assert.hasClass(target.querySelector(".o_graph_view"), "o_action o_view_controller");
+ assert.containsOnce(target, "div.o_graph_canvas_container canvas");
assert.strictEqual(measure, "__count", `the active measure should be "__count" by default`);
assert.strictEqual(mode, "bar", "should be in bar chart mode by default");
assert.strictEqual(order, null, "should not be ordered by default");
@@ -329,8 +332,8 @@ QUnit.module("Views", (hooks) => {
assert.expect(4);
serverData.models.foo.records = [];
const graph = await makeView({ serverData, type: "graph", resModel: "foo" });
- assert.containsOnce(graph, "div.o_graph_canvas_container canvas");
- assert.containsNone(graph, ".o_nocontent_help");
+ assert.containsOnce(target, "div.o_graph_canvas_container canvas");
+ assert.containsNone(target, ".o_nocontent_help");
checkLabels(assert, graph, []);
checkDatasets(assert, graph, [], []);
});
@@ -343,7 +346,7 @@ QUnit.module("Views", (hooks) => {
resModel: "foo",
arch: ``,
});
- assert.containsOnce(graph.el, "div.o_graph_canvas_container canvas");
+ assert.containsOnce(target, "div.o_graph_canvas_container canvas");
checkLabels(assert, graph, ["false", "true"]);
checkDatasets(assert, graph, ["backgroundColor", "borderColor", "data", "label"], {
backgroundColor: "#1f77b4",
@@ -369,7 +372,7 @@ QUnit.module("Views", (hooks) => {
`,
});
- assert.containsOnce(graph.el, "div.o_graph_canvas_container canvas");
+ assert.containsOnce(target, "div.o_graph_canvas_container canvas");
checkLabels(assert, graph, ["false", "true"]);
checkDatasets(
assert,
@@ -787,7 +790,7 @@ QUnit.module("Views", (hooks) => {
resModel: "foo",
arch: ``,
});
- assert.containsOnce(graph.el, "div.o_graph_canvas_container canvas");
+ assert.containsOnce(target, "div.o_graph_canvas_container canvas");
const { mode } = getGraphModelMetaData(graph);
assert.strictEqual(mode, "line");
checkLabels(assert, graph, ["", "Total", ""]);
@@ -814,7 +817,7 @@ QUnit.module("Views", (hooks) => {
`,
});
- assert.containsOnce(graph.el, "div.o_graph_canvas_container canvas");
+ assert.containsOnce(target, "div.o_graph_canvas_container canvas");
checkLabels(assert, graph, ["false", "true"]);
checkDatasets(assert, graph, ["backgroundColor", "borderColor", "data", "label"], {
backgroundColor: "rgba(31,119,180,0.4)",
@@ -840,7 +843,7 @@ QUnit.module("Views", (hooks) => {
`,
});
- assert.containsOnce(graph.el, "div.o_graph_canvas_container canvas");
+ assert.containsOnce(target, "div.o_graph_canvas_container canvas");
checkLabels(assert, graph, ["false", "true"]);
checkDatasets(
assert,
@@ -1262,13 +1265,13 @@ QUnit.module("Views", (hooks) => {
// this test makes sure the line chart does not crash when only one data
// point is displayed.
serverData.models.foo.records = serverData.models.foo.records.slice(0, 1);
- const graph = await makeView({
+ await makeView({
serverData,
type: "graph",
resModel: "foo",
arch: ``,
});
- assert.containsOnce(graph, "canvas", "should have a canvas");
+ assert.containsOnce(target, "canvas", "should have a canvas");
});
QUnit.test("pie chart rendering (no groupBy)", async function (assert) {
@@ -1279,7 +1282,7 @@ QUnit.module("Views", (hooks) => {
resModel: "foo",
arch: ``,
});
- assert.containsOnce(graph.el, "div.o_graph_canvas_container canvas");
+ assert.containsOnce(target, "div.o_graph_canvas_container canvas");
const { mode } = getGraphModelMetaData(graph);
assert.strictEqual(mode, "pie");
checkLabels(assert, graph, ["Total"]);
@@ -1306,7 +1309,7 @@ QUnit.module("Views", (hooks) => {
`,
});
- assert.containsOnce(graph.el, "div.o_graph_canvas_container canvas");
+ assert.containsOnce(target, "div.o_graph_canvas_container canvas");
checkLabels(assert, graph, ["false", "true"]);
checkDatasets(assert, graph, ["backgroundColor", "borderColor", "data"], {
backgroundColor: ["#1f77b4", "#ff7f0e"],
@@ -1331,7 +1334,7 @@ QUnit.module("Views", (hooks) => {
`,
});
- assert.containsOnce(graph.el, "div.o_graph_canvas_container canvas");
+ assert.containsOnce(target, "div.o_graph_canvas_container canvas");
checkLabels(assert, graph, ["false / xphone", "false / xpad", "true / xphone"]);
checkDatasets(assert, graph, ["backgroundColor", "borderColor", "data", "label"], {
backgroundColor: ["#1f77b4", "#ff7f0e", "#aec7e8"],
@@ -1823,7 +1826,7 @@ QUnit.module("Views", (hooks) => {
{ bar: true, revenue: 2 },
{ bar: false, revenue: -3 },
];
- const graph = await makeView({
+ await makeView({
serverData,
type: "graph",
resModel: "foo",
@@ -1834,12 +1837,12 @@ QUnit.module("Views", (hooks) => {
`,
});
- assert.containsOnce(graph, ".o_view_nocontent");
+ assert.containsOnce(target, ".o_view_nocontent");
assert.strictEqual(
- graph.el.querySelector(".o_view_nocontent").innerText.replace(/[\s\n]/g, " "),
+ target.querySelector(".o_view_nocontent").innerText.replace(/[\s\n]/g, " "),
`Invalid data Pie chart cannot mix positive and negative numbers. Try to change your domain to only display positive results`
);
- assert.containsNone(graph, ".o_graph_canvas_container");
+ assert.containsNone(target, ".o_graph_canvas_container");
}
);
@@ -1898,15 +1901,15 @@ QUnit.module("Views", (hooks) => {
checkModeIs(assert, graph, "bar");
assert.strictEqual(getXAxeLabel(graph), "bar");
assert.strictEqual(getYAxeLabel(graph), "Count");
- await selectMode(graph.el, "line");
+ await selectMode(target, "line");
checkModeIs(assert, graph, "line");
assert.strictEqual(getXAxeLabel(graph), "bar");
- await toggleMenu(graph, "Measures");
- await toggleMenuItem(graph, "Revenue");
+ await toggleMenu(target, "Measures");
+ await toggleMenuItem(target, "Revenue");
assert.strictEqual(getYAxeLabel(graph), "Revenue");
assert.ok(true, "Message");
- await toggleGroupByMenu(graph);
- await toggleMenuItem(graph, "Color");
+ await toggleGroupByMenu(target);
+ await toggleMenuItem(target, "Color");
checkModeIs(assert, graph, "line");
assert.strictEqual(getXAxeLabel(graph), "Color");
assert.strictEqual(getYAxeLabel(graph), "Revenue");
@@ -1916,11 +1919,11 @@ QUnit.module("Views", (hooks) => {
assert.expect(12);
const graph = await makeView({ serverData, type: "graph", resModel: "foo" });
checkModeIs(assert, graph, "bar");
- await selectMode(graph.el, "bar"); // click on the active mode does not change anything
+ await selectMode(target, "bar"); // click on the active mode does not change anything
checkModeIs(assert, graph, "bar");
- await selectMode(graph.el, "line");
+ await selectMode(target, "line");
checkModeIs(assert, graph, "line");
- await selectMode(graph.el, "pie");
+ await selectMode(target, "pie");
checkModeIs(assert, graph, "pie");
});
@@ -1930,15 +1933,15 @@ QUnit.module("Views", (hooks) => {
function checkMeasure(measure) {
const yAxe = getChart(graph).config.options.scales.yAxes[0];
assert.strictEqual(yAxe.scaleLabel.labelString, measure);
- const item = [...graph.el.querySelectorAll(".o_menu_item")].find(
+ const item = [...target.querySelectorAll(".o_menu_item")].find(
(el) => el.innerText === measure
);
assert.hasClass(item, "selected");
}
- await toggleMenu(graph, "Measures");
+ await toggleMenu(target, "Measures");
checkMeasure("Count");
checkLegend(assert, graph, "Count");
- await toggleMenuItem(graph, "Foo");
+ await toggleMenuItem(target, "Foo");
checkMeasure("Foo");
checkLegend(assert, graph, "Foo");
});
@@ -2023,12 +2026,12 @@ QUnit.module("Views", (hooks) => {
checkLabels(assert, graph, ["xphone", "xpad"]);
checkLegend(assert, graph, ["false / Undefined", "true / Undefined", "true / red"]);
- await selectMode(graph.el, "line");
+ await selectMode(target, "line");
checkLabels(assert, graph, ["xphone", "xpad"]);
checkLegend(assert, graph, ["false / Undefined", "true / Undefined", "true / red"]);
- await selectMode(graph.el, "pie");
+ await selectMode(target, "pie");
checkLabels(assert, graph, [
"xphone / false / Undefined",
@@ -2047,20 +2050,20 @@ QUnit.module("Views", (hooks) => {
QUnit.test("no content helper", async function (assert) {
assert.expect(3);
serverData.models.foo.records = [];
- const graph = await makeView({
+ await makeView({
serverData,
type: "graph",
resModel: "foo",
noContentHelp: '
This helper should not be displayed in graph views
',
});
- assert.containsOnce(graph, "div.o_graph_canvas_container canvas");
- assert.containsNone(graph, "div.o_view_nocontent");
- assert.containsNone(graph, ".abc");
+ assert.containsOnce(target, "div.o_graph_canvas_container canvas");
+ assert.containsNone(target, "div.o_view_nocontent");
+ assert.containsNone(target, ".abc");
});
QUnit.test("no content helper after update", async function (assert) {
assert.expect(6);
- const graph = await makeView({
+ await makeView({
serverData,
type: "graph",
resModel: "foo",
@@ -2069,14 +2072,14 @@ QUnit.module("Views", (hooks) => {
views: [[false, "search"]],
},
});
- assert.containsOnce(graph, "div.o_graph_canvas_container canvas");
- assert.containsNone(graph, "div.o_view_nocontent");
- assert.containsNone(graph, ".abc");
- await toggleFilterMenu(graph);
- await toggleMenuItem(graph, "False Domain");
- assert.containsOnce(graph, "div.o_graph_canvas_container canvas");
- assert.containsNone(graph, "div.o_view_nocontent");
- assert.containsNone(graph, ".abc");
+ assert.containsOnce(target, "div.o_graph_canvas_container canvas");
+ assert.containsNone(target, "div.o_view_nocontent");
+ assert.containsNone(target, ".abc");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "False Domain");
+ assert.containsOnce(target, "div.o_graph_canvas_container canvas");
+ assert.containsNone(target, "div.o_view_nocontent");
+ assert.containsNone(target, ".abc");
});
QUnit.test("can reload with other group by", async function (assert) {
@@ -2097,8 +2100,8 @@ QUnit.module("Views", (hooks) => {
`,
});
checkLabels(assert, graph, ["xphone", "xpad"]);
- await toggleGroupByMenu(graph);
- await toggleMenuItem(graph, "Color");
+ await toggleGroupByMenu(target);
+ await toggleMenuItem(target, "Color");
checkLabels(assert, graph, ["Undefined", "red"]);
});
@@ -2132,7 +2135,7 @@ QUnit.module("Views", (hooks) => {
];
let serverId = 1;
- const graph = await makeView({
+ await makeView({
mockRPC: function (_, args) {
if (args.method === "create_or_replace") {
const favorite = args.args[0];
@@ -2163,34 +2166,34 @@ QUnit.module("Views", (hooks) => {
`,
});
- await toggleFavoriteMenu(graph);
- await toggleSaveFavorite(graph);
- await editFavoriteName(graph, "First Favorite");
- await saveFavorite(graph);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "First Favorite");
+ await saveFavorite(target);
- await toggleMenu(graph, "Measures");
- await toggleMenuItem(graph, "Foo");
+ await toggleMenu(target, "Measures");
+ await toggleMenuItem(target, "Foo");
- await toggleFavoriteMenu(graph);
- await toggleSaveFavorite(graph);
- await editFavoriteName(graph, "Second Favorite");
- await saveFavorite(graph);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "Second Favorite");
+ await saveFavorite(target);
- await selectMode(graph.el, "line");
+ await selectMode(target, "line");
- await toggleFavoriteMenu(graph);
- await toggleSaveFavorite(graph);
- await editFavoriteName(graph, "Third Favorite");
- await saveFavorite(graph);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "Third Favorite");
+ await saveFavorite(target);
- await toggleGroupByMenu(graph);
- await toggleMenuItem(graph, "Product");
- await toggleMenuItem(graph, "Color");
+ await toggleGroupByMenu(target);
+ await toggleMenuItem(target, "Product");
+ await toggleMenuItem(target, "Color");
- await toggleFavoriteMenu(graph);
- await toggleSaveFavorite(graph);
- await editFavoriteName(graph, "Fourth Favorite");
- await saveFavorite(graph);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "Fourth Favorite");
+ await saveFavorite(target);
});
QUnit.test("correctly uses graph_ keys from the context", async function (assert) {
@@ -2326,8 +2329,8 @@ QUnit.module("Views", (hooks) => {
{ title: "FooFighters", lines: [{ label: "Total", value: "239" }] },
0
);
- await toggleMenu(graph, "Measures");
- await toggleMenuItem(graph, "Nirvana");
+ await toggleMenu(target, "Measures");
+ await toggleMenuItem(target, "Nirvana");
checkTooltip(
assert,
graph,
@@ -2354,8 +2357,8 @@ QUnit.module("Views", (hooks) => {
checkLegend(assert, graph, "Count");
assert.strictEqual(getYAxeLabel(graph), "Count");
checkModeIs(assert, graph, "bar");
- await toggleFilterMenu(graph);
- await toggleMenuItem(graph, "Context");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "Context");
checkLegend(assert, graph, "Foo");
assert.strictEqual(getYAxeLabel(graph), "Foo");
checkModeIs(assert, graph, "line");
@@ -2363,7 +2366,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("reload graph with correct fields", async function (assert) {
assert.expect(2);
- const graph = await makeView({
+ await makeView({
serverData,
mockRPC: function (_, args) {
if (args.method === "web_read_group") {
@@ -2383,8 +2386,8 @@ QUnit.module("Views", (hooks) => {
`,
});
- await toggleFilterMenu(graph);
- await toggleMenuItem(graph, "False Domain");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "False Domain");
});
QUnit.test("initial groupby is kept when reloading", async function (assert) {
@@ -2415,8 +2418,8 @@ QUnit.module("Views", (hooks) => {
checkDatasets(assert, graph, "data", { data: [82, 157] });
assert.strictEqual(getXAxeLabel(graph), "Product");
assert.strictEqual(getYAxeLabel(graph), "Foo");
- await toggleFilterMenu(graph);
- await toggleMenuItem(graph, "False Domain");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "False Domain");
checkLabels(assert, graph, []);
checkLegend(assert, graph, []);
checkDatasets(assert, graph, "data", []);
@@ -2503,15 +2506,15 @@ QUnit.module("Views", (hooks) => {
QUnit.test("not use a many2one as a measure by default", async function (assert) {
assert.expect(1);
- const graph = await makeView({
+ await makeView({
serverData,
type: "graph",
resModel: "foo",
arch: "",
});
- await toggleMenu(graph, "Measures");
+ await toggleMenu(target, "Measures");
assert.deepEqual(
- [...graph.el.querySelectorAll(".o_cp_bottom_left .o_menu_item")].map(
+ [...target.querySelectorAll(".o_cp_bottom_left .o_menu_item")].map(
(el) => el.innerText
),
["Foo", "Revenue", "Count"]
@@ -2522,13 +2525,13 @@ QUnit.module("Views", (hooks) => {
"graph view crash when moving from search view using Down key",
async function (assert) {
assert.expect(1);
- const graph = await makeView({
+ await makeView({
serverData,
type: "graph",
resModel: "foo",
arch: ``,
});
- await triggerEvent(graph.el, ".o_searchview input", "keydown", { key: "ArrowDown" });
+ await triggerEvent(target, ".o_searchview input", "keydown", { key: "ArrowDown" });
assert.ok(true, "should not generate any error");
}
);
@@ -2543,7 +2546,7 @@ QUnit.module("Views", (hooks) => {
store: true,
group_operator: "sum",
};
- const graph = await makeView({
+ await makeView({
serverData,
type: "graph",
resModel: "foo",
@@ -2554,9 +2557,9 @@ QUnit.module("Views", (hooks) => {
`,
});
- await toggleMenu(graph, "Measures");
+ await toggleMenu(target, "Measures");
assert.deepEqual(
- [...graph.el.querySelectorAll(".o_cp_bottom_left .o_menu_item")].map(
+ [...target.querySelectorAll(".o_cp_bottom_left .o_menu_item")].map(
(el) => el.innerText
),
["Bouh", "Foo", "Revenue", "Count"]
@@ -2593,8 +2596,8 @@ QUnit.module("Views", (hooks) => {
arch: ``,
additionalMeasures: ["product_id"],
});
- await toggleMenu(graph, "Measures");
- await toggleMenuItem(graph, "Product");
+ await toggleMenu(target, "Measures");
+ await toggleMenuItem(target, "Product");
checkLegend(assert, graph, "Product");
assert.strictEqual(getYAxeLabel(graph), "Product");
}
@@ -2664,12 +2667,12 @@ QUnit.module("Views", (hooks) => {
return getChart(graph).data.labels.some((l) => /Undefined/.test(l));
}
assert.notOk(someUndefined());
- await selectMode(graph.el, "bar");
+ await selectMode(target, "bar");
assert.ok(someUndefined());
- await selectMode(graph.el, "pie");
+ await selectMode(target, "pie");
assert.ok(someUndefined());
// Undefined should not appear after switching back to line chart
- await selectMode(graph.el, "line");
+ await selectMode(target, "line");
assert.notOk(someUndefined());
}
);
@@ -2690,8 +2693,8 @@ QUnit.module("Views", (hooks) => {
additionalMeasures: ["revenue"],
});
checkTooltip(assert, graph, { lines: [{ label: "Total", value: "8" }] }, 0);
- await toggleMenu(graph, "Measures");
- await toggleMenuItem(graph, "Revenue");
+ await toggleMenu(target, "Measures");
+ await toggleMenuItem(target, "Revenue");
checkTooltip(
assert,
graph,
@@ -2716,9 +2719,9 @@ QUnit.module("Views", (hooks) => {
`,
});
checkTooltip(assert, graph, { lines: [{ label: "Total", value: "8" }] }, 0);
- await toggleMenu(graph, "Measures");
+ await toggleMenu(target, "Measures");
assert.notOk(
- [...graph.el.querySelectorAll(".o_menu_item")].find(
+ [...target.querySelectorAll(".o_menu_item")].find(
(el) => el.innerText.trim() === "Revenue"
),
`"Revenue" can not be found in the "Measures" menu`
@@ -2976,27 +2979,27 @@ QUnit.module("Views", (hooks) => {
QUnit.test("graph view without invisible attribute on field", async function (assert) {
assert.expect(4);
- const graph = await makeView({
+ await makeView({
serverData,
type: "graph",
resModel: "foo",
arch: ``,
});
- await toggleMenu(graph, "Measures");
+ await toggleMenu(target, "Measures");
assert.containsN(
- graph,
+ target,
".o_menu_item",
3,
"there should be three menu item in the measures dropdown (count, revenue and foo)"
);
- assert.containsOnce(graph, '.o_menu_item:contains("Revenue")');
- assert.containsOnce(graph, '.o_menu_item:contains("Foo")');
- assert.containsOnce(graph, '.o_menu_item:contains("Count")');
+ assert.containsOnce(target, '.o_menu_item:contains("Revenue")');
+ assert.containsOnce(target, '.o_menu_item:contains("Foo")');
+ assert.containsOnce(target, '.o_menu_item:contains("Count")');
});
QUnit.test("graph view with invisible attribute on field", async function (assert) {
assert.expect(2);
- const graph = await makeView({
+ await makeView({
serverData,
type: "graph",
resModel: "foo",
@@ -3006,14 +3009,14 @@ QUnit.module("Views", (hooks) => {
`,
});
- await toggleMenu(graph, "Measures");
+ await toggleMenu(target, "Measures");
assert.containsN(
- graph,
+ target,
".o_menu_item",
2,
"there should be only two menu item in the measures dropdown (count and foo)"
);
- assert.containsNone(graph, '.o_menu_item:contains("Revenue")');
+ assert.containsNone(target, '.o_menu_item:contains("Revenue")');
});
QUnit.test("graph view sort by measure", async function (assert) {
@@ -3034,66 +3037,66 @@ QUnit.module("Views", (hooks) => {
`,
});
- assert.containsOnce(graph, "button.oi-sort--ascending");
- assert.containsOnce(graph, "button.oi-sort--descending");
+ assert.containsOnce(target, "button.oi-sort--ascending");
+ assert.containsOnce(target, "button.oi-sort--descending");
checkLegend(assert, graph, "Count", "measure should be by count");
assert.hasClass(
- graph.el.querySelector("button.oi-sort--descending"),
+ target.querySelector("button.oi-sort--descending"),
"active",
'sorting should be applie on descending order by default when sorting="desc"'
);
checkDatasets(assert, graph, "data", { data: [4, 3, 1] });
- await click(graph.el, "button.oi-sort--ascending");
+ await click(target, "button.oi-sort--ascending");
assert.hasClass(
- graph.el.querySelector("button.oi-sort--ascending"),
+ target.querySelector("button.oi-sort--ascending"),
"active",
"ascending order should be applied"
);
checkDatasets(assert, graph, "data", { data: [1, 3, 4] });
- await click(graph.el, "button.oi-sort--descending");
+ await click(target, "button.oi-sort--descending");
assert.hasClass(
- graph.el.querySelector("button.oi-sort--descending"),
+ target.querySelector("button.oi-sort--descending"),
"active",
"descending order button should be active"
);
checkDatasets(assert, graph, "data", { data: [4, 3, 1] });
// again click on descending button to deactivate order button
- await click(graph.el, "button.oi-sort--descending");
+ await click(target, "button.oi-sort--descending");
assert.doesNotHaveClass(
- graph.el.querySelector("button.oi-sort--descending"),
+ target.querySelector("button.oi-sort--descending"),
"active",
"descending order button should not be active"
);
checkDatasets(assert, graph, "data", { data: [4, 1, 3] });
// set line mode
- await selectMode(graph.el, "line");
- assert.containsOnce(graph, "button.oi-sort--ascending");
- assert.containsOnce(graph, "button.oi-sort--descending");
+ await selectMode(target, "line");
+ assert.containsOnce(target, "button.oi-sort--ascending");
+ assert.containsOnce(target, "button.oi-sort--descending");
checkLegend(assert, graph, "Count", "measure should be by count");
assert.doesNotHaveClass(
- graph.el.querySelector("button.oi-sort--descending"),
+ target.querySelector("button.oi-sort--descending"),
"active",
"descending order should be applied"
);
checkDatasets(assert, graph, "data", { data: [4, 1, 3] });
- await click(graph.el, "button.oi-sort--ascending");
+ await click(target, "button.oi-sort--ascending");
assert.hasClass(
- graph.el.querySelector("button.oi-sort--ascending"),
+ target.querySelector("button.oi-sort--ascending"),
"active",
"ascending order button should be active"
);
checkDatasets(assert, graph, "data", { data: [1, 3, 4] });
- await click(graph.el, "button.oi-sort--descending");
+ await click(target, "button.oi-sort--descending");
assert.hasClass(
- graph.el.querySelector("button.oi-sort--descending"),
+ target.querySelector("button.oi-sort--descending"),
"active",
"descending order button should be active"
);
@@ -3122,26 +3125,26 @@ QUnit.module("Views", (hooks) => {
checkLegend(assert, graph, ["false", "true"], "measure should be by count");
checkDatasets(assert, graph, "data", [{ data: [1, 1, 3] }, { data: [3, 0, 0] }]);
- await click(graph.el, "button.oi-sort--ascending");
+ await click(target, "button.oi-sort--ascending");
assert.hasClass(
- graph.el.querySelector("button.oi-sort--ascending"),
+ target.querySelector("button.oi-sort--ascending"),
"active",
"ascending order should be applied by default"
);
checkDatasets(assert, graph, "data", [{ data: [1, 3, 1] }, { data: [0, 0, 3] }]);
- await click(graph.el, "button.oi-sort--descending");
+ await click(target, "button.oi-sort--descending");
assert.hasClass(
- graph.el.querySelector("button.oi-sort--descending"),
+ target.querySelector("button.oi-sort--descending"),
"active",
"ascending order button should be active"
);
checkDatasets(assert, graph, "data", [{ data: [1, 3, 1] }, { data: [3, 0, 0] }]);
// again click on descending button to deactivate order button
- await click(graph.el, "button.oi-sort--descending");
+ await click(target, "button.oi-sort--descending");
assert.doesNotHaveClass(
- graph.el.querySelector("button.oi-sort--descending"),
+ target.querySelector("button.oi-sort--descending"),
"active",
"descending order button should not be active"
);
@@ -3182,9 +3185,9 @@ QUnit.module("Views", (hooks) => {
{ data: [0, 1, 0, 0] },
]);
- await click(graph.el, "button.oi-sort--ascending");
+ await click(target, "button.oi-sort--ascending");
assert.hasClass(
- graph.el.querySelector("button.oi-sort--ascending"),
+ target.querySelector("button.oi-sort--ascending"),
"active",
"ascending order should be applied by default"
);
@@ -3194,9 +3197,9 @@ QUnit.module("Views", (hooks) => {
{ data: [0, 0, 0, 1] },
]);
- await click(graph.el, "button.oi-sort--descending");
+ await click(target, "button.oi-sort--descending");
assert.hasClass(
- graph.el.querySelector("button.oi-sort--descending"),
+ target.querySelector("button.oi-sort--descending"),
"active",
"descending order button should be active"
);
@@ -3207,9 +3210,9 @@ QUnit.module("Views", (hooks) => {
]);
// again click on descending button to deactivate order button
- await click(graph.el, "button.oi-sort--descending");
+ await click(target, "button.oi-sort--descending");
assert.doesNotHaveClass(
- graph.el.querySelector("button.oi-sort--descending"),
+ target.querySelector("button.oi-sort--descending"),
"active",
"descending order button should not be active"
);
@@ -3222,7 +3225,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("empty graph view with sample data", async function (assert) {
assert.expect(8);
- const graph = await makeView({
+ await makeView({
serverData,
type: "graph",
resModel: "foo",
@@ -3241,25 +3244,25 @@ QUnit.module("Views", (hooks) => {
noContentHelp: 'click to add a foo
',
});
- assert.hasClass(graph.el, "o_view_sample_data");
- assert.containsOnce(graph, ".o_view_nocontent");
- assert.containsOnce(graph, ".o_graph_canvas_container canvas");
- assert.hasClass(graph.el.querySelector(".o_graph_renderer"), "o_sample_data_disabled");
+ assert.hasClass(target.querySelector(".o_graph_view"), "o_view_sample_data");
+ assert.containsOnce(target, ".o_view_nocontent");
+ assert.containsOnce(target, ".o_graph_canvas_container canvas");
+ assert.hasClass(target.querySelector(".o_graph_renderer"), "o_sample_data_disabled");
- await toggleFilterMenu(graph);
- await toggleMenuItem(graph, "False Domain");
- assert.doesNotHaveClass(graph.el, "o_view_sample_data");
- assert.containsNone(graph, ".o_view_nocontent");
- assert.containsOnce(graph, ".o_graph_canvas_container canvas");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "False Domain");
+ assert.doesNotHaveClass(target, "o_view_sample_data");
+ assert.containsNone(target, ".o_view_nocontent");
+ assert.containsOnce(target, ".o_graph_canvas_container canvas");
assert.doesNotHaveClass(
- graph.el.querySelector(".o_graph_renderer"),
+ target.querySelector(".o_graph_renderer"),
"o_sample_data_disabled"
);
});
QUnit.test("non empty graph view with sample data", async function (assert) {
assert.expect(8);
- const graph = await makeView({
+ await makeView({
serverData,
type: "graph",
resModel: "foo",
@@ -3276,22 +3279,22 @@ QUnit.module("Views", (hooks) => {
`,
noContentHelp: 'click to add a foo
',
});
- assert.doesNotHaveClass(graph.el, "o_view_sample_data");
- assert.containsNone(graph, ".o_view_nocontent");
- assert.containsOnce(graph, ".o_graph_canvas_container canvas");
+ assert.doesNotHaveClass(target, "o_view_sample_data");
+ assert.containsNone(target, ".o_view_nocontent");
+ assert.containsOnce(target, ".o_graph_canvas_container canvas");
assert.doesNotHaveClass(
- graph.el.querySelector(".o_graph_canvas_container"),
+ target.querySelector(".o_graph_canvas_container"),
"o_sample_data_disabled"
);
- await toggleFilterMenu(graph);
- await toggleMenuItem(graph, "False Domain");
- assert.doesNotHaveClass(graph.el, "o_view_sample_data");
- assert.containsOnce(graph, ".o_graph_canvas_container canvas");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "False Domain");
+ assert.doesNotHaveClass(target, "o_view_sample_data");
+ assert.containsOnce(target, ".o_graph_canvas_container canvas");
assert.doesNotHaveClass(
- graph.el.querySelector(".o_graph_canvas_container"),
+ target.querySelector(".o_graph_canvas_container"),
"o_sample_data_disabled"
);
- assert.containsNone(graph, ".o_view_nocontent");
+ assert.containsNone(target, ".o_view_nocontent");
});
QUnit.test("reload chart with switchView button keep internal state", async function (assert) {
@@ -3338,8 +3341,8 @@ QUnit.module("Views", (hooks) => {
},
});
checkLabels(assert, graph, ["2", "3", "4", "24", "42", "48", "53", "63"]);
- await toggleGroupByMenu(graph);
- await toggleMenuItem(graph, "Foo");
+ await toggleGroupByMenu(target);
+ await toggleMenuItem(target, "Foo");
checkLabels(assert, graph, ["xphone", "xpad"]);
}
);
@@ -3366,22 +3369,22 @@ QUnit.module("Views", (hooks) => {
checkModeIs(assert, graph, "line");
- await selectMode(graph.el, "bar");
+ await selectMode(target, "bar");
checkModeIs(assert, graph, "bar");
- assert.hasClass(graph.el.querySelector(`[data-tooltip="Stacked"]`), "active");
+ assert.hasClass(target.querySelector(`[data-tooltip="Stacked"]`), "active");
- await click(graph.el.querySelector(`[data-tooltip="Stacked"]`));
+ await click(target.querySelector(`[data-tooltip="Stacked"]`));
- assert.doesNotHaveClass(graph.el.querySelector(`[data-tooltip="Stacked"]`), "active");
- assert.doesNotHaveClass(graph.el.querySelector(`[data-tooltip="Ascending"]`), "active");
+ assert.doesNotHaveClass(target.querySelector(`[data-tooltip="Stacked"]`), "active");
+ assert.doesNotHaveClass(target.querySelector(`[data-tooltip="Ascending"]`), "active");
- await click(graph.el.querySelector(`[data-tooltip="Ascending"]`));
+ await click(target.querySelector(`[data-tooltip="Ascending"]`));
- assert.hasClass(graph.el.querySelector(`[data-tooltip="Ascending"]`), "active");
+ assert.hasClass(target.querySelector(`[data-tooltip="Ascending"]`), "active");
- await toggleMenu(graph, "Measures");
- await toggleMenuItem(graph, "Foo");
+ await toggleMenu(target, "Measures");
+ await toggleMenuItem(target, "Foo");
assert.verifySteps([
`["__count"]`, // first load
@@ -3420,8 +3423,8 @@ QUnit.module("Views", (hooks) => {
// Set a domain (this reload is delayed)
def = makeDeferred();
- await toggleFilterMenu(graph);
- await toggleMenuItem(graph, "My Filter");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My Filter");
checkDatasets(assert, graph, ["data", "label"], {
data: [4, 4],
@@ -3429,8 +3432,8 @@ QUnit.module("Views", (hooks) => {
});
// Toggle a measure
- await toggleMenu(graph, "Measures");
- await toggleMenuItem(graph, "Foo");
+ await toggleMenu(target, "Measures");
+ await toggleMenuItem(target, "Foo");
checkDatasets(assert, graph, ["data", "label"], {
data: [4, 4],
@@ -3476,8 +3479,8 @@ QUnit.module("Views", (hooks) => {
// Set a domain (this reload is delayed)
def = makeDeferred();
- await toggleFilterMenu(graph);
- await toggleMenuItem(graph, "My Filter");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My Filter");
checkDatasets(assert, graph, ["data", "label"], {
data: [4, 4],
@@ -3486,7 +3489,7 @@ QUnit.module("Views", (hooks) => {
checkModeIs(assert, graph, "line");
// Change graph mode
- await selectMode(graph.el, "bar");
+ await selectMode(target, "bar");
checkDatasets(assert, graph, ["data", "label"], {
data: [4, 4],
@@ -3533,11 +3536,11 @@ QUnit.module("Views", (hooks) => {
checkDatasets(assert, graph, "data", { data: [82, 157] });
def = makeDeferred();
- await toggleGroupByMenu(graph);
- await toggleMenuItem(graph, "Color");
- await toggleMenuItem(graph, "Color");
- await toggleMenuItem(graph, "Date");
- await toggleMenuItemOption(graph, "Date", "Month");
+ await toggleGroupByMenu(target);
+ await toggleMenuItem(target, "Color");
+ await toggleMenuItem(target, "Color");
+ await toggleMenuItem(target, "Date");
+ await toggleMenuItemOption(target, "Date", "Month");
checkLabels(assert, graph, ["xphone", "xpad"]);
checkDatasets(assert, graph, "data", { data: [82, 157] });
@@ -3618,8 +3621,8 @@ QUnit.module("Views", (hooks) => {
`,
});
- await toggleComparisonMenu(graph);
- await toggleMenuItem(graph, "Date: Previous period");
+ await toggleComparisonMenu(target);
+ await toggleMenuItem(target, "Date: Previous period");
checkLabels(assert, graph, ["", ""]);
});
@@ -3652,8 +3655,8 @@ QUnit.module("Views", (hooks) => {
`,
});
- await toggleComparisonMenu(graph);
- await toggleMenuItem(graph, "Date: Previous period");
+ await toggleComparisonMenu(target);
+ await toggleMenuItem(target, "Date: Previous period");
checkDatasets(assert, graph, "backgroundColor", {
backgroundColor: undefined,
diff --git a/addons/web/static/tests/views/pivot_view_tests.js b/addons/web/static/tests/views/pivot_view_tests.js
index a18d187d825..3cd27365abd 100644
--- a/addons/web/static/tests/views/pivot_view_tests.js
+++ b/addons/web/static/tests/views/pivot_view_tests.js
@@ -202,7 +202,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("simple pivot rendering", async function (assert) {
assert.expect(4);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -219,17 +219,17 @@ QUnit.module("Views", (hooks) => {
},
});
- assert.hasClass(pivot.el, "o_action o_view_controller");
- assert.hasClass(pivot.el.querySelector("table"), "o_enable_linking");
+ assert.hasClass(target.querySelector(".o_pivot_view"), "o_action o_view_controller");
+ assert.hasClass(target.querySelector("table"), "o_enable_linking");
assert.containsOnce(
- pivot,
+ target,
"td.o_pivot_cell_value:contains(32)",
"should contain a pivot cell with the sum of all records"
);
});
QUnit.test("pivot rendering with widget", async function (assert) {
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -240,7 +240,7 @@ QUnit.module("Views", (hooks) => {
});
assert.containsOnce(
- pivot,
+ target,
"td.o_pivot_cell_value:contains(32:00)",
"should contain a pivot cell with the sum of all records"
);
@@ -254,7 +254,7 @@ QUnit.module("Views", (hooks) => {
group_operator: "sum",
};
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -264,13 +264,13 @@ QUnit.module("Views", (hooks) => {
`,
});
- await click(pivot.el.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
+ await click(target.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
assert.strictEqual(
- pivot.el.querySelector(".o_cp_bottom_left .dropdown-menu .dropdown-item").innerText,
+ target.querySelector(".o_cp_bottom_left .dropdown-menu .dropdown-item").innerText,
"BAR"
);
assert.strictEqual(
- pivot.el.querySelector(".o_pivot_measure_row").innerText,
+ target.querySelector(".o_pivot_measure_row").innerText,
"BAR",
"the displayed name should be the one set in the string attribute"
);
@@ -286,7 +286,7 @@ QUnit.module("Views", (hooks) => {
group_operator: "sum",
};
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -296,7 +296,7 @@ QUnit.module("Views", (hooks) => {
`,
});
assert.strictEqual(
- pivot.el.querySelector(".o_pivot_measure_row").innerText,
+ target.querySelector(".o_pivot_measure_row").innerText,
"fubar",
"the displayed name should be the one set in the string attribute"
);
@@ -310,7 +310,7 @@ QUnit.module("Views", (hooks) => {
foo2: { string: "Foo2", type: "integer", store: true, group_operator: "sum" },
});
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -322,13 +322,13 @@ QUnit.module("Views", (hooks) => {
});
// there should be only one displayed measure as the other one is invisible
- assert.containsOnce(pivot, ".o_pivot_measure_row");
- await click(pivot.el.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
+ assert.containsOnce(target, ".o_pivot_measure_row");
+ await click(target.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
// there should be only one measure besides count, as the other one is invisible
- assert.containsN(pivot, ".o_cp_bottom_left .dropdown-menu .dropdown-item", 2);
+ assert.containsN(target, ".o_cp_bottom_left .dropdown-menu .dropdown-item", 2);
// the invisible field souldn't be in the groupable fields neither
- await click(pivot.el.querySelector(".o_pivot_header_cell_closed"));
- assert.containsNone(pivot, '.dropdown-menu a[data-field="foo2"]');
+ await click(target.querySelector(".o_pivot_header_cell_closed"));
+ assert.containsNone(target, '.dropdown-menu a[data-field="foo2"]');
});
QUnit.test('pivot view without "string" attribute', async function (assert) {
@@ -355,7 +355,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("group headers should have a tooltip", async function (assert) {
assert.expect(2);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -367,11 +367,11 @@ QUnit.module("Views", (hooks) => {
});
assert.strictEqual(
- pivot.el.querySelectorAll("tbody .o_pivot_header_cell_closed")[0].dataset.tooltip,
+ target.querySelectorAll("tbody .o_pivot_header_cell_closed")[0].dataset.tooltip,
"Date"
);
assert.strictEqual(
- pivot.el.querySelectorAll("thead .o_pivot_header_cell_closed")[1].dataset.tooltip,
+ target.querySelectorAll("thead .o_pivot_header_cell_closed")[1].dataset.tooltip,
"Product"
);
});
@@ -379,7 +379,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test(
"pivot view add computed fields explicitly defined as measure",
async function (assert) {
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -389,13 +389,13 @@ QUnit.module("Views", (hooks) => {
`,
});
- await click(pivot.el.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
+ await click(target.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
assert.containsOnce(
- pivot,
+ target,
".o_cp_bottom_left .dropdown-menu .dropdown-item:contains(Computed and not stored)"
);
assert.strictEqual(
- pivot.el.querySelector(".o_pivot_measure_row").innerText,
+ target.querySelector(".o_pivot_measure_row").innerText,
"Computed and not stored"
);
}
@@ -435,7 +435,7 @@ QUnit.module("Views", (hooks) => {
};
serviceRegistry.add("action", fakeActionService, { force: true });
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -455,14 +455,14 @@ QUnit.module("Views", (hooks) => {
},
});
- assert.hasClass(pivot.el.querySelector("table"), "o_enable_linking");
- await click(pivot.el.querySelectorAll(".o_pivot_cell_value")[1]); // should trigger a do_action
+ assert.hasClass(target.querySelector("table"), "o_enable_linking");
+ await click(target.querySelectorAll(".o_pivot_cell_value")[1]); // should trigger a do_action
});
QUnit.test("row and column are highlighted when hovering a cell", async function (assert) {
assert.expect(11);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -475,35 +475,35 @@ QUnit.module("Views", (hooks) => {
// check row highlighting
assert.hasClass(
- pivot.el.querySelector("table"),
+ target.querySelector("table"),
"table-hover",
"with className 'table-hover', rows are highlighted (bootstrap)"
);
// check column highlighting
// hover third measure
- await triggerEvents(pivot.el, "th.o_pivot_measure_row:nth-of-type(3)", ["mouseover"]);
- assert.containsN(pivot, ".o_cell_hover", 3);
+ await triggerEvents(target, "th.o_pivot_measure_row:nth-of-type(3)", ["mouseover"]);
+ assert.containsN(target, ".o_cell_hover", 3);
for (var i = 1; i <= 3; i++) {
assert.hasClass(
- pivot.el.querySelector(`tbody tr:nth-of-type(${i}) td:nth-of-type(3)`),
+ target.querySelector(`tbody tr:nth-of-type(${i}) td:nth-of-type(3)`),
"o_cell_hover"
);
}
- await triggerEvents(pivot.el, "th.o_pivot_measure_row:nth-of-type(3)", ["mouseout"]);
- assert.containsNone(pivot, ".o_cell_hover");
+ await triggerEvents(target, "th.o_pivot_measure_row:nth-of-type(3)", ["mouseout"]);
+ assert.containsNone(target, ".o_cell_hover");
// hover second cell, second row
- await triggerEvents(pivot.el, "tbody tr:nth-of-type(1) td:nth-of-type(2)", ["mouseover"]);
- assert.containsN(pivot, ".o_cell_hover", 3);
+ await triggerEvents(target, "tbody tr:nth-of-type(1) td:nth-of-type(2)", ["mouseover"]);
+ assert.containsN(target, ".o_cell_hover", 3);
for (i = 1; i <= 3; i++) {
assert.hasClass(
- pivot.el.querySelector(`tbody tr:nth-of-type(${i}) td:nth-of-type(2)`),
+ target.querySelector(`tbody tr:nth-of-type(${i}) td:nth-of-type(2)`),
"o_cell_hover"
);
}
- await triggerEvents(pivot.el, "tbody tr:nth-of-type(2) td:nth-of-type(2)", ["mouseout"]);
- assert.containsNone(pivot, ".o_cell_hover");
+ await triggerEvents(target, "tbody tr:nth-of-type(2) td:nth-of-type(2)", ["mouseout"]);
+ assert.containsNone(target, ".o_cell_hover");
});
QUnit.test("columns are highlighted when hovering a measure", async function (assert) {
@@ -516,7 +516,7 @@ QUnit.module("Views", (hooks) => {
serverData.models.partner.records[2].date = "2016-11-22";
serverData.models.partner.records[3].date = "2016-11-03";
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -532,44 +532,44 @@ QUnit.module("Views", (hooks) => {
context: { search_default_date_filter: true },
});
- await toggleComparisonMenu(pivot);
- await toggleMenuItem(pivot, "Date: Previous period");
+ await toggleComparisonMenu(target);
+ await toggleMenuItem(target, "Date: Previous period");
// hover Count in first group
- await triggerEvents(pivot.el, "th.o_pivot_measure_row:nth-of-type(1)", ["mouseover"]);
- assert.containsN(pivot, ".o_cell_hover", 3);
+ await triggerEvents(target, "th.o_pivot_measure_row:nth-of-type(1)", ["mouseover"]);
+ assert.containsN(target, ".o_cell_hover", 3);
for (let i = 1; i <= 3; i++) {
assert.hasClass(
- pivot.el.querySelector(`tbody tr:nth-of-type(${i}) td:nth-of-type(1)`),
+ target.querySelector(`tbody tr:nth-of-type(${i}) td:nth-of-type(1)`),
"o_cell_hover"
);
}
- await triggerEvents(pivot.el, "th.o_pivot_measure_row:nth-of-type(1)", ["mouseout"]);
- assert.containsNone(pivot, ".o_cell_hover");
+ await triggerEvents(target, "th.o_pivot_measure_row:nth-of-type(1)", ["mouseout"]);
+ assert.containsNone(target, ".o_cell_hover");
// hover Count in second group
- await triggerEvents(pivot.el, "th.o_pivot_measure_row:nth-of-type(2)", ["mouseover"]);
- assert.containsN(pivot, ".o_cell_hover", 3);
+ await triggerEvents(target, "th.o_pivot_measure_row:nth-of-type(2)", ["mouseover"]);
+ assert.containsN(target, ".o_cell_hover", 3);
for (let i = 1; i <= 3; i++) {
assert.hasClass(
- pivot.el.querySelector(`tbody tr:nth-of-type(${i}) td:nth-of-type(4)`),
+ target.querySelector(`tbody tr:nth-of-type(${i}) td:nth-of-type(4)`),
"o_cell_hover"
);
}
- await triggerEvents(pivot.el, "th.o_pivot_measure_row:nth-of-type(2)", ["mouseout"]);
- assert.containsNone(pivot, ".o_cell_hover");
+ await triggerEvents(target, "th.o_pivot_measure_row:nth-of-type(2)", ["mouseout"]);
+ assert.containsNone(target, ".o_cell_hover");
// hover Count in total column
- await triggerEvents(pivot.el, "th.o_pivot_measure_row:nth-of-type(3)", ["mouseover"]);
- assert.containsN(pivot, ".o_cell_hover", 3);
+ await triggerEvents(target, "th.o_pivot_measure_row:nth-of-type(3)", ["mouseover"]);
+ assert.containsN(target, ".o_cell_hover", 3);
for (let i = 1; i <= 3; i++) {
assert.hasClass(
- pivot.el.querySelector(`tbody tr:nth-of-type(${i}) td:nth-of-type(7)`),
+ target.querySelector(`tbody tr:nth-of-type(${i}) td:nth-of-type(7)`),
"o_cell_hover"
);
}
- await triggerEvents(pivot.el, "th.o_pivot_measure_row:nth-of-type(3)", ["mouseout"]);
- assert.containsNone(pivot, ".o_cell_hover");
+ await triggerEvents(target, "th.o_pivot_measure_row:nth-of-type(3)", ["mouseout"]);
+ assert.containsNone(target, ".o_cell_hover");
});
QUnit.test(
@@ -584,7 +584,7 @@ QUnit.module("Views", (hooks) => {
serverData.models.partner.records[2].date = "2016-11-22";
serverData.models.partner.records[3].date = "2016-11-03";
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -600,20 +600,20 @@ QUnit.module("Views", (hooks) => {
context: { search_default_date_filter: true },
});
- await toggleComparisonMenu(pivot);
- await toggleMenuItem(pivot, "Date: Previous period");
+ await toggleComparisonMenu(target);
+ await toggleMenuItem(target, "Date: Previous period");
// hover the second origin in second group
- await triggerEvents(pivot.el, "th.o_pivot_origin_row:nth-of-type(5)", ["mouseover"]);
- assert.containsN(pivot, ".o_cell_hover", 3);
+ await triggerEvents(target, "th.o_pivot_origin_row:nth-of-type(5)", ["mouseover"]);
+ assert.containsN(target, ".o_cell_hover", 3);
for (let i = 1; i <= 3; i++) {
assert.hasClass(
- pivot.el.querySelector(`tbody tr:nth-of-type(${i}) td:nth-of-type(5)`),
+ target.querySelector(`tbody tr:nth-of-type(${i}) td:nth-of-type(5)`),
"o_cell_hover"
);
}
- await triggerEvents(pivot.el, "th.o_pivot_origin_row:nth-of-type(5)", ["mouseout"]);
- assert.containsNone(pivot, ".o_cell_hover");
+ await triggerEvents(target, "th.o_pivot_origin_row:nth-of-type(5)", ["mouseout"]);
+ assert.containsNone(target, ".o_cell_hover");
}
);
@@ -629,7 +629,7 @@ QUnit.module("Views", (hooks) => {
};
serviceRegistry.add("action", fakeActionService, { force: true });
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -639,9 +639,9 @@ QUnit.module("Views", (hooks) => {
`,
});
- assert.doesNotHaveClass(pivot.el.querySelector("table"), "o_enable_linking");
- assert.containsOnce(pivot, ".o_pivot_cell_value");
- await click(pivot.el.querySelector(".o_pivot_cell_value")); // should not trigger a do_action
+ assert.doesNotHaveClass(target.querySelector("table"), "o_enable_linking");
+ assert.containsOnce(target, ".o_pivot_cell_value");
+ await click(target.querySelector(".o_pivot_cell_value")); // should not trigger a do_action
});
QUnit.test('clicking on the "Total" cell with time range activated', async function (assert) {
@@ -665,7 +665,7 @@ QUnit.module("Views", (hooks) => {
};
serviceRegistry.add("action", fakeActionService, { force: true });
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -678,11 +678,11 @@ QUnit.module("Views", (hooks) => {
});
assert.hasClass(
- pivot.el.querySelector("table"),
+ target.querySelector("table"),
"o_enable_linking",
"root node should have classname 'o_enable_linking'"
);
- await click(pivot.el.querySelector(".o_pivot_cell_value"));
+ await click(target.querySelector(".o_pivot_cell_value"));
});
QUnit.test(
@@ -713,7 +713,7 @@ QUnit.module("Views", (hooks) => {
};
serviceRegistry.add("action", fakeActionService, { force: true });
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -725,14 +725,14 @@ QUnit.module("Views", (hooks) => {
context: { search_default_date_filter: true },
});
- await toggleComparisonMenu(pivot);
- await toggleMenuItem(pivot, "Date: Previous period");
+ await toggleComparisonMenu(target);
+ await toggleMenuItem(target, "Date: Previous period");
- assert.hasClass(pivot.el.querySelector("table"), "o_enable_linking");
+ assert.hasClass(target.querySelector("table"), "o_enable_linking");
// here we click on the group corresponding to Total/Total/This Month
- pivot.el.querySelectorAll(".o_pivot_cell_value")[1].click(); // should trigger a do_action with appropriate domain
+ target.querySelectorAll(".o_pivot_cell_value")[1].click(); // should trigger a do_action with appropriate domain
// here we click on the group corresponding to xphone/Total/This Month
- pivot.el.querySelectorAll(".o_pivot_cell_value")[4].click(); // should trigger a do_action with appropriate domain
+ target.querySelectorAll(".o_pivot_cell_value")[4].click(); // should trigger a do_action with appropriate domain
}
);
@@ -763,7 +763,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("without measures, pivot view uses __count by default", async function (assert) {
assert.expect(4);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -779,16 +779,16 @@ QUnit.module("Views", (hooks) => {
},
});
- await click(pivot.el.querySelector(".o_cp_bottom_left .dropdown-toggle"));
- assert.containsOnce(pivot.el, ".o_cp_bottom_left .dropdown-menu .dropdown-item");
- const measure = pivot.el.querySelector(".o_cp_bottom_left .dropdown-menu .dropdown-item");
+ await click(target.querySelector(".o_cp_bottom_left .dropdown-toggle"));
+ assert.containsOnce(target, ".o_cp_bottom_left .dropdown-menu .dropdown-item");
+ const measure = target.querySelector(".o_cp_bottom_left .dropdown-menu .dropdown-item");
assert.strictEqual(measure.innerText, "Count");
assert.hasClass(measure, "selected", "The count measure should be selected");
});
QUnit.test("pivot view can be reloaded", async function (assert) {
let readGroupCount = 0;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -805,16 +805,16 @@ QUnit.module("Views", (hooks) => {
});
assert.containsOnce(
- pivot,
+ target,
"td.o_pivot_cell_value:contains(4)",
"should contain a pivot cell with the number of all records"
);
assert.strictEqual(readGroupCount, 1, "should have done 1 rpc");
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "Some Filter");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "Some Filter");
assert.containsOnce(
- pivot,
+ target,
"td.o_pivot_cell_value:contains(2)",
"should contain a pivot cell with the number of remaining records"
);
@@ -822,7 +822,7 @@ QUnit.module("Views", (hooks) => {
});
QUnit.test("pivot view grouped by many2one field", async function (assert) {
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -833,14 +833,14 @@ QUnit.module("Views", (hooks) => {
`,
});
- assert.containsOnce(pivot, ".o_pivot_header_cell_opened", "should have one opened header");
+ assert.containsOnce(target, ".o_pivot_header_cell_opened", "should have one opened header");
assert.containsOnce(
- pivot,
+ target,
".o_pivot_header_cell_closed:contains(xphone)",
"should display one header with 'xphone'"
);
assert.containsOnce(
- pivot,
+ target,
".o_pivot_header_cell_closed:contains(xpad)",
"should display one header with 'xpad'"
);
@@ -851,7 +851,7 @@ QUnit.module("Views", (hooks) => {
let rpcCount = 0;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -865,39 +865,39 @@ QUnit.module("Views", (hooks) => {
},
});
assert.containsN(
- pivot,
+ target,
"tbody tr",
3,
"should have 3 rows: 1 for the opened header, and 2 for data"
);
// click on the opened header to close it
- await click(pivot.el, ".o_pivot_header_cell_opened");
+ await click(target, ".o_pivot_header_cell_opened");
- assert.containsOnce(pivot, "tbody tr", "should have 1 row");
+ assert.containsOnce(target, "tbody tr", "should have 1 row");
// click on closed header to open dropdown
- await click(pivot.el, "tbody .o_pivot_header_cell_closed");
- assert.containsOnce(pivot, ".o_pivot .dropdown-menu");
+ await click(target, "tbody .o_pivot_header_cell_closed");
+ assert.containsOnce(target, ".o_pivot .dropdown-menu");
assert.strictEqual(
- pivot.el.querySelector(".o_pivot .dropdown-menu").innerText.replace(/\s/g, ""),
+ target.querySelector(".o_pivot .dropdown-menu").innerText.replace(/\s/g, ""),
"CompanyTypeCustomerDateOtherProductProductbarAddCustomGroup"
);
// open the Date sub dropdown
- await mouseEnter(pivot.el, ".o_pivot .dropdown-menu .dropdown-toggle.o_menu_item");
+ await mouseEnter(target, ".o_pivot .dropdown-menu .dropdown-toggle.o_menu_item");
assert.strictEqual(
- pivot.el
+ target
.querySelector(".o_pivot .dropdown-menu .dropdown-menu")
.innerText.replace(/\s/g, ""),
"YearQuarterMonthWeekDay"
);
await click(
- pivot.el.querySelectorAll(".o_pivot .dropdown-menu .dropdown-menu .dropdown-item")[2]
+ target.querySelectorAll(".o_pivot .dropdown-menu .dropdown-menu .dropdown-item")[2]
);
- assert.containsN(pivot, "tbody tr", 4, "should have 4 rows: one for header, 3 for data");
+ assert.containsN(target, "tbody tr", 4, "should have 4 rows: one for header, 3 for data");
assert.strictEqual(
rpcCount,
3,
@@ -908,7 +908,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("more folding/unfolding", async function (assert) {
assert.expect(1);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -920,18 +920,16 @@ QUnit.module("Views", (hooks) => {
});
// open dropdown to zoom into first row
- await click(pivot.el.querySelector("tbody .o_pivot_header_cell_closed"));
+ await click(target.querySelector("tbody .o_pivot_header_cell_closed"));
// click on date by day
- await mouseEnter(pivot.el.querySelector("tbody .dropdown-menu .dropdown-toggle"));
- await click(
- pivot.el.querySelector("tbody .dropdown-menu .dropdown-menu span:nth-child(5)")
- );
+ await mouseEnter(target.querySelector("tbody .dropdown-menu .dropdown-toggle"));
+ await click(target.querySelector("tbody .dropdown-menu .dropdown-menu span:nth-child(5)"));
// open dropdown to zoom into second row
- await click(pivot.el.querySelectorAll("tbody th.o_pivot_header_cell_closed")[1]);
+ await click(target.querySelectorAll("tbody th.o_pivot_header_cell_closed")[1]);
assert.containsN(
- pivot,
+ target,
"tbody tr",
7,
"should have 7 rows (1 for total, 1 for xphone, 1 for xpad, 4 for data)"
@@ -941,7 +939,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("fold and unfold header group", async function (assert) {
assert.expect(3);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -952,22 +950,22 @@ QUnit.module("Views", (hooks) => {
`,
});
- assert.containsN(pivot, "thead tr", 3);
+ assert.containsN(target, "thead tr", 3);
// fold opened col group
- await click(pivot.el.querySelector("thead .o_pivot_header_cell_opened"));
- assert.containsN(pivot, "thead tr", 2);
+ await click(target.querySelector("thead .o_pivot_header_cell_opened"));
+ assert.containsN(target, "thead tr", 2);
// unfold it
- await click(pivot.el.querySelector("thead .o_pivot_header_cell_closed"));
- await click(pivot.el.querySelector(".dropdown-menu span:nth-child(5)"));
- assert.containsN(pivot, "thead tr", 3);
+ await click(target.querySelector("thead .o_pivot_header_cell_closed"));
+ await click(target.querySelector(".dropdown-menu span:nth-child(5)"));
+ assert.containsN(target, "thead tr", 3);
});
QUnit.test("unfold second header group", async function (assert) {
assert.expect(4);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -978,16 +976,16 @@ QUnit.module("Views", (hooks) => {
`,
});
- assert.containsN(pivot, "thead tr", 3);
+ assert.containsN(target, "thead tr", 3);
let values = ["12", "20", "32"];
- assert.strictEqual(getCurrentValues(pivot.el), values.join(","));
+ assert.strictEqual(getCurrentValues(target), values.join(","));
// unfold it
- await click(pivot.el.querySelector("thead .o_pivot_header_cell_closed:last-child"));
- await click(pivot.el.querySelector(".dropdown-menu span:nth-child(1)"));
- assert.containsN(pivot, "thead tr", 4);
+ await click(target.querySelector("thead .o_pivot_header_cell_closed:last-child"));
+ await click(target.querySelector(".dropdown-menu span:nth-child(1)"));
+ assert.containsN(target, "thead tr", 4);
values = ["12", "17", "3", "32"];
- assert.strictEqual(getCurrentValues(pivot.el), values.join(","));
+ assert.strictEqual(getCurrentValues(target), values.join(","));
});
QUnit.test(
@@ -995,7 +993,7 @@ QUnit.module("Views", (hooks) => {
async function (assert) {
assert.expect(6);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1015,42 +1013,42 @@ QUnit.module("Views", (hooks) => {
});
// open group by dropdown
- await toggleGroupByMenu(pivot);
+ await toggleGroupByMenu(target);
assert.containsN(
- pivot,
+ target,
".o_control_panel .o_cp_bottom_right .dropdown-menu .o_menu_item",
3,
"should have 3 dropdown items in searchview groupby"
);
assert.containsOnce(
- pivot,
+ target,
".o_control_panel .o_cp_bottom_right .dropdown-menu .o_add_custom_group_menu",
"should have custom group generator in searchview groupby"
);
// click on closed header to open dropdown
- await click(pivot.el, "tbody tr:last-child .o_pivot_header_cell_closed");
+ await click(target, "tbody tr:last-child .o_pivot_header_cell_closed");
assert.containsN(
- pivot,
+ target,
".dropdown-menu > .dropdown-item",
3,
"should have 3 dropdown items same as searchview groupby"
);
assert.containsOnce(
- pivot,
+ target,
".dropdown-menu .o_add_custom_group_menu",
"should have custom group generator same as searchview groupby"
);
// check custom groupby selection has groupable fields only
- await mouseEnter(pivot.el, ".dropdown-menu .o_add_custom_group_menu .dropdown-toggle");
+ await mouseEnter(target, ".dropdown-menu .o_add_custom_group_menu .dropdown-toggle");
assert.containsN(
- pivot,
+ target,
".dropdown-menu .o_add_custom_group_menu .dropdown-menu option",
6,
"should have 6 fields in custom groupby"
);
const optionDescriptions = [
- ...pivot.el.querySelectorAll(
+ ...target.querySelectorAll(
".dropdown-menu .o_add_custom_group_menu .dropdown-menu option"
),
].map((option) => option.innerText.trim());
@@ -1063,7 +1061,7 @@ QUnit.module("Views", (hooks) => {
);
QUnit.test("pivot group dropdown sync with search groupby dropdown", async function (assert) {
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1080,59 +1078,59 @@ QUnit.module("Views", (hooks) => {
});
// open group by dropdown
- await toggleGroupByMenu(pivot);
+ await toggleGroupByMenu(target);
assert.containsN(
- pivot,
+ target,
".o_control_panel .o_cp_bottom_right .dropdown-menu .o_menu_item",
2,
"should have 2 dropdown items in searchview groupby"
);
// click on closed header to open dropdown
- await click(pivot.el, "tbody tr:last-child .o_pivot_header_cell_closed");
+ await click(target, "tbody tr:last-child .o_pivot_header_cell_closed");
assert.containsN(
- pivot,
+ target,
".dropdown-menu .o_menu_item",
2,
"should have 2 dropdown items in pivot groupby"
);
// add a custom group in searchview groupby
- await toggleGroupByMenu(pivot);
- await toggleAddCustomGroup(pivot);
- await applyGroup(pivot);
+ await toggleGroupByMenu(target);
+ await toggleAddCustomGroup(target);
+ await applyGroup(target);
assert.containsN(
- pivot,
+ target,
".o_control_panel .o_cp_bottom_right .dropdown-menu .o_menu_item",
3,
"should have 3 dropdown items in searchview groupby now"
);
- await click(pivot.el, "tbody tr:last-child .o_pivot_header_cell_closed");
+ await click(target, "tbody tr:last-child .o_pivot_header_cell_closed");
assert.containsN(
- pivot,
+ target,
".dropdown-menu .o_menu_item",
2,
"should still have 2 dropdown items in pivot groupby"
);
// add a custom group in pivot groupby
- await mouseEnter(pivot.el, ".dropdown-menu .o_add_custom_group_menu .dropdown-toggle");
- pivot.el.querySelector(".dropdown-menu .o_add_custom_group_menu select").value = "date";
- await triggerEvent(pivot.el, ".dropdown-menu .o_add_custom_group_menu select", "change");
- await click(pivot.el, ".dropdown-menu .o_add_custom_group_menu .dropdown-menu .btn");
+ await mouseEnter(target, ".dropdown-menu .o_add_custom_group_menu .dropdown-toggle");
+ target.querySelector(".dropdown-menu .o_add_custom_group_menu select").value = "date";
+ await triggerEvent(target, ".dropdown-menu .o_add_custom_group_menu select", "change");
+ await click(target, ".dropdown-menu .o_add_custom_group_menu .dropdown-menu .btn");
// click on closed header to open groupby selection dropdown
- await click(pivot.el, "tbody tr:last-child .o_pivot_header_cell_closed");
+ await click(target, "tbody tr:last-child .o_pivot_header_cell_closed");
assert.containsN(
- pivot,
+ target,
".dropdown-menu .o_menu_item",
3,
"should have 3 dropdown items in pivot groupby dropdown"
);
// applying custom groupby in pivot groupby dropdown will not update search dropdown
- await toggleGroupByMenu(pivot);
+ await toggleGroupByMenu(target);
assert.containsN(
- pivot,
+ target,
".o_control_panel .o_cp_bottom_right .dropdown-menu .o_menu_item",
3,
"should still have 3 dropdown items in searchview groupby dropdown"
@@ -1142,7 +1140,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test(
"pivot groupby dropdown renders custom search at the end with separator",
async function (assert) {
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1159,31 +1157,31 @@ QUnit.module("Views", (hooks) => {
});
// open group by dropdown
- await toggleGroupByMenu(pivot);
+ await toggleGroupByMenu(target);
assert.containsN(
- pivot,
+ target,
".o_control_panel .o_cp_bottom_right .dropdown-menu .o_menu_item",
2,
"should have 2 dropdown items in searchview groupby"
);
- await toggleAddCustomGroup(pivot);
- await applyGroup(pivot);
+ await toggleAddCustomGroup(target);
+ await applyGroup(target);
assert.containsN(
- pivot,
+ target,
".o_control_panel .o_cp_bottom_right .dropdown-menu .o_menu_item",
3,
"should have 3 dropdown items in searchview groupby now"
);
// click on closed header to open dropdown
- await click(pivot.el.querySelectorAll("tbody .o_pivot_header_cell_closed")[1]);
- let items = pivot.el.querySelectorAll(".o_menu_item");
+ await click(target.querySelectorAll("tbody .o_pivot_header_cell_closed")[1]);
+ let items = target.querySelectorAll(".o_menu_item");
assert.deepEqual(
[...items].map((it) => it.innerText),
["bar", "product"]
);
assert.containsOnce(
- pivot,
+ target,
"tbody .dropdown-menu .dropdown-divider",
"pivot groupby menu should only have one separator"
);
@@ -1194,23 +1192,19 @@ QUnit.module("Views", (hooks) => {
);
// add a custom group in pivot groupby
- await mouseEnter(pivot.el, ".dropdown-menu .o_add_custom_group_menu .dropdown-toggle");
- pivot.el.querySelector(".o_add_custom_group_menu select").value = "customer";
- await triggerEvent(
- pivot.el,
- ".dropdown-menu .o_add_custom_group_menu select",
- "change"
- );
- await click(pivot.el, ".dropdown-menu .o_add_custom_group_menu .dropdown-menu .btn");
+ await mouseEnter(target, ".dropdown-menu .o_add_custom_group_menu .dropdown-toggle");
+ target.querySelector(".o_add_custom_group_menu select").value = "customer";
+ await triggerEvent(target, ".dropdown-menu .o_add_custom_group_menu select", "change");
+ await click(target, ".dropdown-menu .o_add_custom_group_menu .dropdown-menu .btn");
- await click(pivot.el.querySelectorAll("tbody .o_pivot_header_cell_closed")[1]);
- items = pivot.el.querySelectorAll(".o_menu_item");
+ await click(target.querySelectorAll("tbody .o_pivot_header_cell_closed")[1]);
+ items = target.querySelectorAll(".o_menu_item");
assert.deepEqual(
[...items].map((it) => it.innerText),
["bar", "product", "Customer"]
);
assert.containsN(
- pivot,
+ target,
"tbody .dropdown-menu .dropdown-divider",
2,
"pivot groupby menu should now have two separators"
@@ -1234,7 +1228,7 @@ QUnit.module("Views", (hooks) => {
assert.expect(1);
let checkReadGroup = false;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1260,23 +1254,23 @@ QUnit.module("Views", (hooks) => {
});
// click on closed header to open dropdown and apply groupby on date field
- await click(pivot.el.querySelector("thead .o_pivot_header_cell_closed"));
+ await click(target.querySelector("thead .o_pivot_header_cell_closed"));
await mouseEnter(
- pivot.el.querySelector(
+ target.querySelector(
"thead .dropdown-menu .o_add_custom_group_menu .dropdown-toggle "
)
);
checkReadGroup = true;
- const select = pivot.el.querySelector(".o_add_custom_group_menu select");
+ const select = target.querySelector(".o_add_custom_group_menu select");
select.value = "date";
select.dispatchEvent(new Event("change"));
- await click(pivot.el.querySelector(".o_add_custom_group_menu .btn-primary"));
+ await click(target.querySelector(".o_add_custom_group_menu .btn-primary"));
}
);
QUnit.test("pivot view without group by specified in search arch", async function (assert) {
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1288,27 +1282,27 @@ QUnit.module("Views", (hooks) => {
});
// open group by dropdown
- await toggleGroupByMenu(pivot);
+ await toggleGroupByMenu(target);
assert.containsNone(
- pivot,
+ target,
".o_control_panel .o_cp_bottom_right .dropdown-menu .o_menu_item",
"should not have any dropdown item in searchview groupby"
);
assert.containsOnce(
- pivot,
+ target,
".o_control_panel .o_cp_bottom_right .dropdown-menu .o_add_custom_group_menu",
"should have add custom group item in searchview groupby"
);
// click on closed header to open dropdown
- await click(pivot.el.querySelectorAll("tbody .o_pivot_header_cell_closed")[1]);
+ await click(target.querySelectorAll("tbody .o_pivot_header_cell_closed")[1]);
assert.containsN(
- pivot,
+ target,
"tbody .dropdown-menu .o_menu_item",
6,
"should have 6 dropdown items i.e. all groupable fields available"
);
assert.containsOnce(
- pivot,
+ target,
".dropdown-menu .o_add_custom_group_menu",
"should have custom group generator in groupby dropdown"
);
@@ -1342,7 +1336,7 @@ QUnit.module("Views", (hooks) => {
},
];
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1358,27 +1352,27 @@ QUnit.module("Views", (hooks) => {
});
// open group by dropdown
- await toggleGroupByMenu(pivot);
+ await toggleGroupByMenu(target);
assert.containsOnce(
- pivot,
+ target,
".o_control_panel .o_cp_bottom_right .dropdown-menu .o_menu_item",
"should have 1 dropdown item in searchview groupby"
);
assert.containsNone(
- pivot,
+ target,
".o_control_panel .o_cp_bottom_right .dropdown-menu .o_add_custom_group_menu",
"should not have custom group generator in searchview groupby"
);
// click on closed header to open dropdown
- await click(pivot.el.querySelector("tbody .o_pivot_header_cell_closed"));
+ await click(target.querySelector("tbody .o_pivot_header_cell_closed"));
assert.containsOnce(
- pivot,
+ target,
"tbody .dropdown-menu .dropdown-item",
"should have 1 dropdown items"
);
assert.containsNone(
- pivot,
+ target,
".dropdown-menu .o_add_custom_group_menu",
"should not have custom group generator in groupby dropdown"
);
@@ -1390,7 +1384,7 @@ QUnit.module("Views", (hooks) => {
async function (assert) {
assert.expect(3);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1406,31 +1400,31 @@ QUnit.module("Views", (hooks) => {
});
// click on closed header to open dropdown
- await click(pivot.el.querySelector("thead .o_pivot_header_cell_closed"));
- assert.containsOnce(pivot, "thead .dropdown-menu .o_add_custom_group_menu");
+ await click(target.querySelector("thead .o_pivot_header_cell_closed"));
+ assert.containsOnce(target, "thead .dropdown-menu .o_add_custom_group_menu");
await mouseEnter(
- pivot.el.querySelector(
+ target.querySelector(
"thead .dropdown-menu .o_add_custom_group_menu .dropdown-toggle"
)
);
assert.containsOnce(
- pivot,
+ target,
"thead .dropdown-menu .o_add_custom_group_menu .dropdown-menu"
);
// click on apply button should close dropdown
await click(
- pivot.el.querySelector(
+ target.querySelector(
"thead .dropdown-menu .o_add_custom_group_menu .dropdown-menu .btn-primary"
)
);
- assert.containsNone(pivot, "thead .dropdown-menu");
+ assert.containsNone(target, "thead .dropdown-menu");
}
);
QUnit.test("can toggle extra measure", async function (assert) {
let rpcCount = 0;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1446,42 +1440,42 @@ QUnit.module("Views", (hooks) => {
rpcCount = 0;
assert.containsN(
- pivot,
+ target,
".o_pivot_cell_value",
3,
"should have 3 cells: 1 for the open header, and 2 for data"
);
- await click(pivot.el.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
+ await click(target.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
assert.doesNotHaveClass(
- $(pivot.el).find(".dropdown-item:contains(Count)"),
+ $(target).find(".dropdown-item:contains(Count)"),
"selected",
"the __count measure should not be selected"
);
- await click($(pivot.el).find(".o_cp_bottom_left .dropdown-item:contains(Count)")[0]);
+ await click($(target).find(".o_cp_bottom_left .dropdown-item:contains(Count)")[0]);
assert.hasClass(
- $(pivot.el).find(".o_cp_bottom_left .dropdown-item:contains(Count)"),
+ $(target).find(".o_cp_bottom_left .dropdown-item:contains(Count)"),
"selected",
"the __count measure should be selected"
);
assert.containsN(
- pivot,
+ target,
".o_pivot_cell_value",
6,
"should have 6 cells: 2 for the open header, and 4 for data"
);
assert.strictEqual(rpcCount, 2, "should have done 2 rpcs to reload data");
- await click($(pivot.el).find(".o_cp_bottom_left .dropdown-item:contains(Count)")[0]);
+ await click($(target).find(".o_cp_bottom_left .dropdown-item:contains(Count)")[0]);
assert.doesNotHaveClass(
- $(pivot.el).find(".dropdown-item:contains(Count)")[0],
+ $(target).find(".dropdown-item:contains(Count)")[0],
"selected",
"the __count measure should not be selected"
);
assert.containsN(
- pivot,
+ target,
".o_pivot_cell_value",
3,
"should have 3 cells: 1 for the open header, and 2 for data"
@@ -1490,25 +1484,25 @@ QUnit.module("Views", (hooks) => {
});
QUnit.test("no content helper when no active measure", async function (assert) {
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
arch: ``,
});
- assert.containsNone(pivot, ".o_view_nocontent");
- assert.containsOnce(pivot, "table");
+ assert.containsNone(target, ".o_view_nocontent");
+ assert.containsOnce(target, "table");
- await click(pivot.el.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
- await click($(pivot.el).find(".o_cp_bottom_left .dropdown-item:contains(Count)")[0]);
+ await click(target.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
+ await click($(target).find(".o_cp_bottom_left .dropdown-item:contains(Count)")[0]);
- assert.containsOnce(pivot, ".o_view_nocontent");
- assert.containsNone(pivot, "table");
+ assert.containsOnce(target, ".o_view_nocontent");
+ assert.containsNone(target, "table");
});
QUnit.test("no content helper when no data", async function (assert) {
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1519,31 +1513,31 @@ QUnit.module("Views", (hooks) => {
`,
});
- assert.containsNone(pivot, ".o_view_nocontent");
- assert.containsOnce(pivot, "table");
+ assert.containsNone(target, ".o_view_nocontent");
+ assert.containsOnce(target, "table");
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "Some Filter");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "Some Filter");
- assert.containsOnce(pivot, ".o_view_nocontent");
- assert.containsNone(pivot, "table");
+ assert.containsOnce(target, ".o_view_nocontent");
+ assert.containsNone(target, "table");
});
QUnit.test("no content helper when no data, part 2", async function (assert) {
serverData.models.partner.records = [];
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
arch: "",
});
- assert.containsOnce(pivot, ".o_view_nocontent");
+ assert.containsOnce(target, ".o_view_nocontent");
});
QUnit.test("no content helper when no data, part 3", async function (assert) {
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1558,33 +1552,33 @@ QUnit.module("Views", (hooks) => {
},
});
- assert.containsOnce(pivot, ".o_searchview .o_searchview_facet");
- assert.containsOnce(pivot, ".o_view_nocontent");
+ assert.containsOnce(target, ".o_searchview .o_searchview_facet");
+ assert.containsOnce(target, ".o_view_nocontent");
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "Some Filter");
- assert.containsN(pivot, ".o_searchview .o_searchview_facet", 2);
- assert.containsOnce(pivot, ".o_view_nocontent");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "Some Filter");
+ assert.containsN(target, ".o_searchview .o_searchview_facet", 2);
+ assert.containsOnce(target, ".o_view_nocontent");
- await toggleMenuItem(pivot, "Some Filter");
- assert.containsOnce(pivot, ".o_searchview .o_searchview_facet");
- assert.containsOnce(pivot, ".o_view_nocontent");
+ await toggleMenuItem(target, "Some Filter");
+ assert.containsOnce(target, ".o_searchview .o_searchview_facet");
+ assert.containsOnce(target, ".o_view_nocontent");
- await click(pivot.el, ".o_facet_remove");
- assert.containsNone(pivot, ".o_searchview .o_searchview_facet");
- assert.containsNone(pivot, ".o_view_nocontent");
+ await click(target, ".o_facet_remove");
+ assert.containsNone(target, ".o_searchview .o_searchview_facet");
+ assert.containsNone(target, ".o_view_nocontent");
// tries to open a field selection menu, to make sure it was not
// removed from the dom.
- await click(pivot.el.querySelector("tbody .o_pivot_header_cell_closed"));
- assert.containsOnce(pivot, "tbody .dropdown-menu");
+ await click(target.querySelector("tbody .o_pivot_header_cell_closed"));
+ assert.containsOnce(target, "tbody .dropdown-menu");
});
QUnit.test("tries to restore previous state after domain change", async function (assert) {
assert.expect(7);
let rpcCount = 0;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1603,34 +1597,34 @@ QUnit.module("Views", (hooks) => {
});
assert.containsN(
- pivot,
+ target,
".o_pivot_cell_value",
3,
"should have 3 cells: 1 for the open header, and 2 for data"
);
assert.containsOnce(
- pivot,
+ target,
".o_pivot_measure_row:contains(Foo)",
"should have 1 row for measure Foo"
);
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "My Filter");
- assert.containsNone(pivot, "table");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My Filter");
+ assert.containsNone(target, "table");
rpcCount = 0;
- await removeFacet(pivot);
+ await removeFacet(target);
- assert.containsOnce(pivot, "table");
+ assert.containsOnce(target, "table");
assert.equal(rpcCount, 2, "should have reloaded data");
assert.containsN(
- pivot,
+ target,
".o_pivot_cell_value",
3,
"should still have 3 cells: 1 for the open header, and 2 for data"
);
assert.containsOnce(
- pivot,
+ target,
".o_pivot_measure_row:contains(Foo)",
"should still have 1 row for measure Foo"
);
@@ -1639,7 +1633,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("can be grouped with the search view", async function (assert) {
assert.expect(4);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1653,20 +1647,20 @@ QUnit.module("Views", (hooks) => {
`,
});
- assert.containsOnce(pivot, ".o_pivot_cell_value", "should have only 1 cell");
- assert.containsOnce(pivot, "tbody tr", "should have 1 rows");
+ assert.containsOnce(target, ".o_pivot_cell_value", "should have only 1 cell");
+ assert.containsOnce(target, "tbody tr", "should have 1 rows");
- await toggleGroupByMenu(pivot);
- await toggleMenuItem(pivot, "Product");
+ await toggleGroupByMenu(target);
+ await toggleMenuItem(target, "Product");
- assert.containsN(pivot, ".o_pivot_cell_value", 3, "should have 3 cells");
- assert.containsN(pivot, "tbody tr", 3, "should have 3 rows");
+ assert.containsN(target, ".o_pivot_cell_value", 3, "should have 3 cells");
+ assert.containsN(target, "tbody tr", 3, "should have 3 rows");
});
QUnit.test("can sort data in a column by clicking on header", async function (assert) {
assert.expect(3);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1679,25 +1673,25 @@ QUnit.module("Views", (hooks) => {
let values = ["32", "12", "20"];
assert.strictEqual(
- getCurrentValues(pivot.el),
+ getCurrentValues(target),
values.join(","),
"should have proper values in cells (total, result 1, result 2)"
);
- await click(pivot.el.querySelector("th.o_pivot_measure_row"));
+ await click(target.querySelector("th.o_pivot_measure_row"));
values = ["32", "12", "20"];
assert.strictEqual(
- getCurrentValues(pivot.el),
+ getCurrentValues(target),
values.join(","),
"should have proper values in cells (total, result 1, result 2)"
);
- await click(pivot.el.querySelector("th.o_pivot_measure_row"));
+ await click(target.querySelector("th.o_pivot_measure_row"));
values = ["32", "20", "12"];
assert.strictEqual(
- getCurrentValues(pivot.el),
+ getCurrentValues(target),
values.join(","),
"should have proper values in cells (total, result 1, result 2)"
);
@@ -1707,7 +1701,7 @@ QUnit.module("Views", (hooks) => {
assert.expect(7);
let nbReadGroups = 0;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1730,45 +1724,45 @@ QUnit.module("Views", (hooks) => {
assert.strictEqual(nbReadGroups, 2, "should have done 2 read_group RPCS");
assert.strictEqual(
- getCurrentValues(pivot.el),
+ getCurrentValues(target),
"32,12,20",
"should have proper values in cells (total, result 1, result 2)"
);
// expand on date:days, product
- await toggleGroupByMenu(pivot);
- await toggleMenuItem(pivot, "Date");
- await toggleMenuItemOption(pivot, "Date", "Month");
+ await toggleGroupByMenu(target);
+ await toggleMenuItem(target, "Date");
+ await toggleMenuItemOption(target, "Date", "Month");
nbReadGroups = 0;
- await toggleMenuItem(pivot, "Product");
+ await toggleMenuItem(target, "Product");
assert.strictEqual(nbReadGroups, 3, "should have done 3 read_group RPCS");
assert.containsN(
- pivot,
+ target,
"tbody tr",
8,
"should have 7 rows (total + 3 for December and 2 for October and April)"
);
// collapse the first two rows
- await click(pivot.el.querySelectorAll("tbody .o_pivot_header_cell_opened")[2]);
- await click(pivot.el.querySelectorAll("tbody .o_pivot_header_cell_opened")[1]);
+ await click(target.querySelectorAll("tbody .o_pivot_header_cell_opened")[2]);
+ await click(target.querySelectorAll("tbody .o_pivot_header_cell_opened")[1]);
- assert.containsN(pivot, "tbody tr", 6, "should have 6 rows now");
+ assert.containsN(target, "tbody tr", 6, "should have 6 rows now");
// expand all
nbReadGroups = 0;
- await click(pivot.el.querySelector(".o_pivot_expand_button"));
+ await click(target.querySelector(".o_pivot_expand_button"));
assert.strictEqual(nbReadGroups, 3, "should have done 3 read_group RPCS");
- assert.containsN(pivot, "tbody tr", 8, "should have 8 rows again");
+ assert.containsN(target, "tbody tr", 8, "should have 8 rows again");
});
QUnit.test("expand all with a delay", async function (assert) {
assert.expect(4);
let def;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1790,30 +1784,30 @@ QUnit.module("Views", (hooks) => {
});
// expand on date:days, product
- await toggleGroupByMenu(pivot);
- await toggleMenuItem(pivot, "Date");
- await toggleMenuItemOption(pivot, "Date", "Month");
- await toggleMenuItem(pivot, "Product");
+ await toggleGroupByMenu(target);
+ await toggleMenuItem(target, "Date");
+ await toggleMenuItemOption(target, "Date", "Month");
+ await toggleMenuItem(target, "Product");
assert.containsN(
- pivot,
+ target,
"tbody tr",
8,
"should have 7 rows (total + 3 for December and 2 for October and April)"
);
// collapse the first two rows
- await click(pivot.el.querySelectorAll("tbody .o_pivot_header_cell_opened")[2]);
- await click(pivot.el.querySelectorAll("tbody .o_pivot_header_cell_opened")[1]);
+ await click(target.querySelectorAll("tbody .o_pivot_header_cell_opened")[2]);
+ await click(target.querySelectorAll("tbody .o_pivot_header_cell_opened")[1]);
- assert.containsN(pivot, "tbody tr", 6, "should have 6 rows now");
+ assert.containsN(target, "tbody tr", 6, "should have 6 rows now");
// expand all
def = makeDeferred();
- await click(pivot.el.querySelector(".o_pivot_expand_button"));
- assert.containsN(pivot, "tbody tr", 6, "should have 6 rows now");
+ await click(target.querySelector(".o_pivot_expand_button"));
+ assert.containsN(target, "tbody tr", 6, "should have 6 rows now");
def.resolve();
await nextTick();
- assert.containsN(pivot, "tbody tr", 8, "should have 8 rows again");
+ assert.containsN(target, "tbody tr", 8, "should have 8 rows again");
});
QUnit.test("can download a file", async function (assert) {
@@ -1824,7 +1818,7 @@ QUnit.module("Views", (hooks) => {
return Promise.resolve();
});
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1835,7 +1829,7 @@ QUnit.module("Views", (hooks) => {
`,
});
- await click(pivot.el.querySelector(".o_pivot_download"));
+ await click(target.querySelector(".o_pivot_download"));
});
QUnit.test(
@@ -1854,7 +1848,7 @@ QUnit.module("Views", (hooks) => {
return Promise.resolve();
});
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1865,7 +1859,7 @@ QUnit.module("Views", (hooks) => {
`,
});
- await click(pivot.el.querySelector(".o_pivot_download"));
+ await click(target.querySelector(".o_pivot_download"));
}
);
@@ -1874,7 +1868,7 @@ QUnit.module("Views", (hooks) => {
serverData.models.partner.records = [];
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1886,7 +1880,7 @@ QUnit.module("Views", (hooks) => {
});
assert.ok(
- pivot.el.querySelector(".o_pivot_download").disabled,
+ target.querySelector(".o_pivot_download").disabled,
"download button should be disabled"
);
});
@@ -1895,7 +1889,7 @@ QUnit.module("Views", (hooks) => {
assert.expect(3);
let expectedContext;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1918,38 +1912,38 @@ QUnit.module("Views", (hooks) => {
pivot_measures: ["foo"],
pivot_row_groupby: [],
};
- await toggleFavoriteMenu(pivot);
- await toggleSaveFavorite(pivot);
- await editFavoriteName(pivot, "Fav1");
- await saveFavorite(pivot);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "Fav1");
+ await saveFavorite(target);
// expand header on field customer
- await click(pivot.el.querySelectorAll("thead .o_pivot_header_cell_closed")[1]);
- await click(pivot.el.querySelectorAll("thead .dropdown-menu .dropdown-item")[1]);
+ await click(target.querySelectorAll("thead .o_pivot_header_cell_closed")[1]);
+ await click(target.querySelectorAll("thead .dropdown-menu .dropdown-item")[1]);
expectedContext = {
group_by: [],
pivot_column_groupby: ["date:day", "customer"],
pivot_measures: ["foo"],
pivot_row_groupby: [],
};
- await toggleFavoriteMenu(pivot);
- await toggleSaveFavorite(pivot);
- await editFavoriteName(pivot, "Fav2");
- await saveFavorite(pivot);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "Fav2");
+ await saveFavorite(target);
// expand row on field product_id
- await click(pivot.el.querySelector("tbody .o_pivot_header_cell_closed"));
- await click(pivot.el.querySelectorAll("tbody .dropdown-menu .dropdown-item")[4]);
+ await click(target.querySelector("tbody .o_pivot_header_cell_closed"));
+ await click(target.querySelectorAll("tbody .dropdown-menu .dropdown-item")[4]);
expectedContext = {
group_by: [],
pivot_column_groupby: ["date:day", "customer"],
pivot_measures: ["foo"],
pivot_row_groupby: ["product_id"],
};
- await toggleFavoriteMenu(pivot);
- await toggleSaveFavorite(pivot);
- await editFavoriteName(pivot, "Fav3");
- await saveFavorite(pivot);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "Fav3");
+ await saveFavorite(target);
});
QUnit.test("correctly remove pivot_ keys from the context", async function (assert) {
@@ -1965,7 +1959,7 @@ QUnit.module("Views", (hooks) => {
let expectedContext;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -1999,72 +1993,72 @@ QUnit.module("Views", (hooks) => {
});
// Unload the filter
- await removeFacet(pivot); // remove previous favorite
+ await removeFacet(target); // remove previous favorite
expectedContext = {
group_by: [],
pivot_column_groupby: ["customer"],
pivot_measures: ["foo"],
pivot_row_groupby: ["product_id"],
};
- await toggleFavoriteMenu(pivot);
- await toggleSaveFavorite(pivot);
- await editFavoriteName(pivot, "1");
- await saveFavorite(pivot);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "1");
+ await saveFavorite(target);
// Let's get rid of the rows groupBy
- await click(pivot.el, "tbody .o_pivot_header_cell_opened");
+ await click(target, "tbody .o_pivot_header_cell_opened");
expectedContext = {
group_by: [],
pivot_column_groupby: ["customer"],
pivot_measures: ["foo"],
pivot_row_groupby: [],
};
- await toggleFavoriteMenu(pivot);
- await toggleSaveFavorite(pivot);
- await editFavoriteName(pivot, "2");
- await saveFavorite(pivot);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "2");
+ await saveFavorite(target);
// And now, get rid of both col and row groupby
- //await click(pivot.el, "tbody .o_pivot_header_cell_opened"); //It was already removed
- await click(pivot.el, "thead .o_pivot_header_cell_opened");
+ //await click(target, "tbody .o_pivot_header_cell_opened"); //It was already removed
+ await click(target, "thead .o_pivot_header_cell_opened");
expectedContext = {
group_by: [],
pivot_column_groupby: [],
pivot_measures: ["foo"],
pivot_row_groupby: [],
};
- await toggleFavoriteMenu(pivot);
- await toggleSaveFavorite(pivot);
- await editFavoriteName(pivot, "3");
- await saveFavorite(pivot);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "3");
+ await saveFavorite(target);
// Group row by product_id
- await click(pivot.el, "tbody .o_pivot_header_cell_closed");
- await click(pivot.el, ".dropdown-menu span:nth-child(5)");
+ await click(target, "tbody .o_pivot_header_cell_closed");
+ await click(target, ".dropdown-menu span:nth-child(5)");
expectedContext = {
group_by: [],
pivot_column_groupby: [],
pivot_measures: ["foo"],
pivot_row_groupby: ["product_id"],
};
- await toggleFavoriteMenu(pivot);
- await toggleSaveFavorite(pivot);
- await editFavoriteName(pivot, "4");
- await saveFavorite(pivot);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "4");
+ await saveFavorite(target);
// Group column by customer
- await click(pivot.el, "thead .o_pivot_header_cell_closed");
- await click(pivot.el, ".dropdown-menu span:nth-child(2)");
+ await click(target, "thead .o_pivot_header_cell_closed");
+ await click(target, ".dropdown-menu span:nth-child(2)");
expectedContext = {
group_by: [],
pivot_column_groupby: ["customer"],
pivot_measures: ["foo"],
pivot_row_groupby: ["product_id"],
};
- await toggleFavoriteMenu(pivot);
- await toggleSaveFavorite(pivot);
- await editFavoriteName(pivot, "5");
- await saveFavorite(pivot);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "5");
+ await saveFavorite(target);
});
QUnit.test("Apply two groupby, and remove facet", async function (assert) {
@@ -2331,7 +2325,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("Unload Filter, reset display, load another filter", async function (assert) {
assert.expect(18);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -2368,114 +2362,114 @@ QUnit.module("Views", (hooks) => {
// Check Columns
assert.strictEqual(
- $(pivot.el).find("thead .o_pivot_header_cell_opened").length,
+ $(target).find("thead .o_pivot_header_cell_opened").length,
1,
"The column should be grouped"
);
assert.strictEqual(
- $(pivot.el).find('thead tr:contains("First")').length,
+ $(target).find('thead tr:contains("First")').length,
1,
'There should be a column "First"'
);
assert.strictEqual(
- $(pivot.el).find('thead tr:contains("Second")').length,
+ $(target).find('thead tr:contains("Second")').length,
1,
'There should be a column "Second"'
);
// Check Rows
assert.strictEqual(
- $(pivot.el).find("tbody .o_pivot_header_cell_opened").length,
+ $(target).find("tbody .o_pivot_header_cell_opened").length,
1,
"The row should be grouped"
);
assert.strictEqual(
- $(pivot.el).find('tbody tr:contains("xphone")').length,
+ $(target).find('tbody tr:contains("xphone")').length,
1,
'There should be a row "xphone"'
);
assert.strictEqual(
- $(pivot.el).find('tbody tr:contains("xpad")').length,
+ $(target).find('tbody tr:contains("xpad")').length,
1,
'There should be a row "xpad"'
);
// Equivalent to unload the filter
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "My fake favorite");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My fake favorite");
// collapse all headers
- await click(pivot.el, ".o_pivot_header_cell_opened:first-child");
- await click(pivot.el, ".o_pivot_header_cell_opened");
+ await click(target, ".o_pivot_header_cell_opened:first-child");
+ await click(target, ".o_pivot_header_cell_opened");
// Check Columns
assert.strictEqual(
- $(pivot.el).find("thead .o_pivot_header_cell_closed").length,
+ $(target).find("thead .o_pivot_header_cell_closed").length,
1,
"The column should not be grouped"
);
assert.strictEqual(
- $(pivot.el).find('thead tr:contains("First")').length,
+ $(target).find('thead tr:contains("First")').length,
0,
'There should not be a column "First"'
);
assert.strictEqual(
- $(pivot.el).find('thead tr:contains("Second")').length,
+ $(target).find('thead tr:contains("Second")').length,
0,
'There should not be a column "Second"'
);
// Check Rows
assert.strictEqual(
- $(pivot.el).find("tbody .o_pivot_header_cell_closed").length,
+ $(target).find("tbody .o_pivot_header_cell_closed").length,
1,
"The row should not be grouped"
);
assert.strictEqual(
- $(pivot.el).find('tbody tr:contains("xphone")').length,
+ $(target).find('tbody tr:contains("xphone")').length,
0,
'There should not be a row "xphone"'
);
assert.strictEqual(
- $(pivot.el).find('tbody tr:contains("xpad")').length,
+ $(target).find('tbody tr:contains("xpad")').length,
0,
'There should not be a row "xpad"'
);
// Equivalent to load another filter
- await removeFacet(pivot); // remove previously saved favorite
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "My fake favorite 2");
+ await removeFacet(target); // remove previously saved favorite
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My fake favorite 2");
// Check Columns
assert.strictEqual(
- $(pivot.el).find("thead .o_pivot_header_cell_opened").length,
+ $(target).find("thead .o_pivot_header_cell_opened").length,
1,
"The column should be grouped"
);
assert.strictEqual(
- $(pivot.el).find('thead tr:contains("First")').length,
+ $(target).find('thead tr:contains("First")').length,
1,
'There should be a column "First"'
);
assert.strictEqual(
- $(pivot.el).find('thead tr:contains("Second")').length,
+ $(target).find('thead tr:contains("Second")').length,
1,
'There should be a column "Second"'
);
// Check Rows
assert.strictEqual(
- $(pivot.el).find("tbody .o_pivot_header_cell_opened").length,
+ $(target).find("tbody .o_pivot_header_cell_opened").length,
1,
"The row should be grouped"
);
assert.strictEqual(
- $(pivot.el).find('tbody tr:contains("xphone")').length,
+ $(target).find('tbody tr:contains("xphone")').length,
1,
'There should be a row "xphone"'
);
assert.strictEqual(
- $(pivot.el).find('tbody tr:contains("xpad")').length,
+ $(target).find('tbody tr:contains("xpad")').length,
1,
'There should be a row "xpad"'
);
@@ -2485,7 +2479,7 @@ QUnit.module("Views", (hooks) => {
assert.expect(2);
let expectedContext;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -2504,12 +2498,12 @@ QUnit.module("Views", (hooks) => {
});
// Set a column groupby
- await click(pivot.el.querySelector("thead .o_pivot_header_cell_closed"));
- await click(pivot.el.querySelectorAll("thead .dropdown-item")[1]);
+ await click(target.querySelector("thead .o_pivot_header_cell_closed"));
+ await click(target.querySelectorAll("thead .dropdown-item")[1]);
// Set a domain
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "My Filter 1");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My Filter 1");
// Save to favorites and check that column groupbys were not lost
expectedContext = {
@@ -2518,19 +2512,19 @@ QUnit.module("Views", (hooks) => {
pivot_measures: ["__count"],
pivot_row_groupby: [],
};
- await toggleFavoriteMenu(pivot);
- await toggleSaveFavorite(pivot);
- await editFavoriteName(pivot, "My favorite 1");
- await saveFavorite(pivot);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "My favorite 1");
+ await saveFavorite(target);
// Set a column groupby
- await removeFacet(pivot); // remove previously saved favorite
- await click(pivot.el.querySelector("thead .o_pivot_header_cell_closed"));
- await click(pivot.el.querySelectorAll("thead .dropdown-menu .dropdown-item")[4]);
+ await removeFacet(target); // remove previously saved favorite
+ await click(target.querySelector("thead .o_pivot_header_cell_closed"));
+ await click(target.querySelectorAll("thead .dropdown-menu .dropdown-item")[4]);
// Set a domain
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "My Filter 2");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My Filter 2");
expectedContext = {
group_by: [],
@@ -2538,16 +2532,16 @@ QUnit.module("Views", (hooks) => {
pivot_measures: ["__count"],
pivot_row_groupby: [],
};
- await toggleFavoriteMenu(pivot);
- await toggleSaveFavorite(pivot);
- await editFavoriteName(pivot, "My favorite 2");
- await saveFavorite(pivot);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "My favorite 2");
+ await saveFavorite(target);
});
QUnit.test("folded groups remain folded at reload", async function (assert) {
assert.expect(5);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -2564,29 +2558,29 @@ QUnit.module("Views", (hooks) => {
});
let values = ["29", "3", "32", "12", "12", "17", "3", "20"];
- assert.strictEqual(getCurrentValues(pivot.el), values.join(","));
+ assert.strictEqual(getCurrentValues(target), values.join(","));
// expand a col group
- await click(pivot.el.querySelectorAll("thead .o_pivot_header_cell_closed")[1]);
- await click(pivot.el.querySelectorAll("thead .dropdown-menu .dropdown-item")[1]);
+ await click(target.querySelectorAll("thead .o_pivot_header_cell_closed")[1]);
+ await click(target.querySelectorAll("thead .dropdown-menu .dropdown-item")[1]);
values = ["29", "2", "1", "32", "12", "12", "17", "2", "1", "20"];
- assert.strictEqual(getCurrentValues(pivot.el), values.join(","));
+ assert.strictEqual(getCurrentValues(target), values.join(","));
// expand a row group
- await click(pivot.el.querySelectorAll("tbody .o_pivot_header_cell_closed")[1]);
- await click(pivot.el.querySelectorAll("tbody .dropdown-menu .dropdown-item")[3]);
+ await click(target.querySelectorAll("tbody .o_pivot_header_cell_closed")[1]);
+ await click(target.querySelectorAll("tbody .dropdown-menu .dropdown-item")[3]);
values = ["29", "2", "1", "32", "12", "12", "17", "2", "1", "20", "17", "2", "1", "20"];
- assert.strictEqual(getCurrentValues(pivot.el), values.join(","));
+ assert.strictEqual(getCurrentValues(target), values.join(","));
// reload (should keep folded groups folded as col/row groupbys didn't change)
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "Dummy Filter");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "Dummy Filter");
- assert.strictEqual(getCurrentValues(pivot.el), values.join(","));
+ assert.strictEqual(getCurrentValues(target), values.join(","));
- await click(pivot.el.querySelector(".o_pivot_expand_button"));
+ await click(target.querySelector(".o_pivot_expand_button"));
// sanity check of what the table should look like if all groups are
// expanded, to ensure that the former asserts are pertinent
@@ -2609,7 +2603,7 @@ QUnit.module("Views", (hooks) => {
"1",
"20",
];
- assert.strictEqual(getCurrentValues(pivot.el), values.join(","));
+ assert.strictEqual(getCurrentValues(target), values.join(","));
});
QUnit.test("Empty results keep groupbys", async function (assert) {
@@ -2622,7 +2616,7 @@ QUnit.module("Views", (hooks) => {
pivot_row_groupby: [],
};
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -2641,33 +2635,33 @@ QUnit.module("Views", (hooks) => {
});
// Set a column groupby
- await click(pivot.el.querySelector("thead .o_pivot_header_cell_closed"));
- await click(pivot.el.querySelectorAll("thead .dropdown-menu .dropdown-item")[1]);
+ await click(target.querySelector("thead .o_pivot_header_cell_closed"));
+ await click(target.querySelectorAll("thead .dropdown-menu .dropdown-item")[1]);
- assert.containsOnce(pivot, "table");
+ assert.containsOnce(target, "table");
// Set a domain for empty results
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "My Filter 1");
- assert.containsNone(pivot, "table");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My Filter 1");
+ assert.containsNone(target, "table");
- await toggleFavoriteMenu(pivot);
- await toggleSaveFavorite(pivot);
- await editFavoriteName(pivot, "My favorite 1");
- await saveFavorite(pivot);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "My favorite 1");
+ await saveFavorite(target);
// Set a domain for not empty results
- await removeFacet(pivot); // remove previously saved favorite
- assert.containsOnce(pivot, "table");
+ await removeFacet(target); // remove previously saved favorite
+ assert.containsOnce(target, "table");
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "My Filter 2");
- assert.containsOnce(pivot, "table");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My Filter 2");
+ assert.containsOnce(target, "table");
- await toggleFavoriteMenu(pivot);
- await toggleSaveFavorite(pivot);
- await editFavoriteName(pivot, "My favorite 2");
- await saveFavorite(pivot);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "My favorite 2");
+ await saveFavorite(target);
});
QUnit.test("correctly uses pivot_ keys from the context", async function (assert) {
@@ -2681,7 +2675,7 @@ QUnit.module("Views", (hooks) => {
group_operator: "sum",
};
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -2698,39 +2692,39 @@ QUnit.module("Views", (hooks) => {
});
assert.containsOnce(
- pivot,
+ target,
"thead .o_pivot_header_cell_opened",
"column: should have one opened header"
);
assert.containsOnce(
- pivot,
+ target,
"thead .o_pivot_header_cell_closed:contains(First)",
"column: should display one closed header with 'First'"
);
assert.containsOnce(
- pivot,
+ target,
"thead .o_pivot_header_cell_closed:contains(Second)",
"column: should display one closed header with 'Second'"
);
assert.containsOnce(
- pivot,
+ target,
"tbody .o_pivot_header_cell_opened",
"row: should have one opened header"
);
assert.containsOnce(
- pivot,
+ target,
"tbody .o_pivot_header_cell_closed:contains(xphone)",
"row: should display one closed header with 'xphone'"
);
assert.containsOnce(
- pivot,
+ target,
"tbody .o_pivot_header_cell_closed:contains(xpad)",
"row: should display one closed header with 'xpad'"
);
assert.strictEqual(
- pivot.el.querySelector("tbody tr").querySelectorAll("td")[2].innerText,
+ target.querySelector("tbody tr").querySelectorAll("td")[2].innerText,
"32",
"selected measure should be foo, with total 32"
);
@@ -2739,7 +2733,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("clear table cells data after closeGroup", async function (assert) {
assert.expect(2);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -2747,26 +2741,26 @@ QUnit.module("Views", (hooks) => {
groupBy: ["product_id"],
});
- await click(pivot.el.querySelector("thead .o_pivot_header_cell_closed"));
- await mouseEnter(pivot.el.querySelector("thead .dropdown-menu .dropdown-toggle"));
+ await click(target.querySelector("thead .o_pivot_header_cell_closed"));
+ await mouseEnter(target.querySelector("thead .dropdown-menu .dropdown-toggle"));
await click(
- pivot.el.querySelectorAll("thead .dropdown-menu .dropdown-menu .dropdown-item")[3]
+ target.querySelectorAll("thead .dropdown-menu .dropdown-menu .dropdown-item")[3]
);
// close and reopen row groupings after changing value
serverData.models.partner.records.find((r) => r.product_id === 37).date = "2016-10-27";
- await click(pivot.el.querySelector("tbody .o_pivot_header_cell_opened"));
- await click(pivot.el.querySelector("tbody .o_pivot_header_cell_closed"));
- await click(pivot.el.querySelectorAll("tbody .dropdown-menu .dropdown-item")[4]);
- assert.strictEqual(pivot.el.querySelectorAll(".o_pivot_cell_value")[4].innerText, ""); // xphone December 2016
+ await click(target.querySelector("tbody .o_pivot_header_cell_opened"));
+ await click(target.querySelector("tbody .o_pivot_header_cell_closed"));
+ await click(target.querySelectorAll("tbody .dropdown-menu .dropdown-item")[4]);
+ assert.strictEqual(target.querySelectorAll(".o_pivot_cell_value")[4].innerText, ""); // xphone December 2016
// invert axis, and reopen column groupings
- await click(pivot.el.querySelector(".o_cp_bottom_left .o_pivot_flip_button"));
- await click(pivot.el.querySelector("thead .o_pivot_header_cell_opened"));
- await click(pivot.el.querySelector("thead .o_pivot_header_cell_closed"));
- await click(pivot.el.querySelectorAll("thead .dropdown-menu .dropdown-item")[4]);
- assert.strictEqual(pivot.el.querySelectorAll(".o_pivot_cell_value")[3].innerText, ""); // December 2016 xphone
+ await click(target.querySelector(".o_cp_bottom_left .o_pivot_flip_button"));
+ await click(target.querySelector("thead .o_pivot_header_cell_opened"));
+ await click(target.querySelector("thead .o_pivot_header_cell_closed"));
+ await click(target.querySelectorAll("thead .dropdown-menu .dropdown-item")[4]);
+ assert.strictEqual(target.querySelectorAll(".o_pivot_cell_value")[3].innerText, ""); // December 2016 xphone
});
QUnit.test("correctly group data after flip (1)", async function (assert) {
@@ -2889,7 +2883,7 @@ QUnit.module("Views", (hooks) => {
group_operator: "sum",
};
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -2914,49 +2908,48 @@ QUnit.module("Views", (hooks) => {
});
assert.strictEqual(
- pivot.el.querySelector("tbody tr").querySelectorAll("td.o_pivot_cell_value")[4]
- .innerText,
+ target.querySelector("tbody tr").querySelectorAll("td.o_pivot_cell_value")[4].innerText,
"0.00",
"the active measure should be amount"
);
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "My fake favorite");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My fake favorite");
assert.containsOnce(
- pivot,
+ target,
"thead .o_pivot_header_cell_opened",
"column: should have one opened header"
);
assert.containsOnce(
- pivot,
+ target,
"thead .o_pivot_header_cell_closed:contains(First)",
"column: should display one closed header with 'First'"
);
assert.containsOnce(
- pivot,
+ target,
"thead .o_pivot_header_cell_closed:contains(Second)",
"column: should display one closed header with 'Second'"
);
assert.containsOnce(
- pivot,
+ target,
"tbody .o_pivot_header_cell_opened",
"row: should have one opened header"
);
assert.containsOnce(
- pivot,
+ target,
"tbody .o_pivot_header_cell_closed:contains(xphone)",
"row: should display one closed header with 'xphone'"
);
assert.containsOnce(
- pivot,
+ target,
"tbody .o_pivot_header_cell_closed:contains(xpad)",
"row: should display one closed header with 'xpad'"
);
assert.strictEqual(
- pivot.el.querySelector("tbody tr").querySelectorAll("td")[2].innerText,
+ target.querySelector("tbody tr").querySelectorAll("td")[2].innerText,
"32",
"selected measure should be foo, with total 32"
);
@@ -2965,7 +2958,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("correctly use group_by key from the context", async function (assert) {
assert.expect(7);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -2978,39 +2971,39 @@ QUnit.module("Views", (hooks) => {
});
assert.containsOnce(
- pivot,
+ target,
"thead .o_pivot_header_cell_opened",
"column: should have one opened header"
);
assert.containsOnce(
- pivot,
+ target,
"thead .o_pivot_header_cell_closed:contains(First)",
'column: should display one closed header with "First"'
);
assert.containsOnce(
- pivot,
+ target,
"thead .o_pivot_header_cell_closed:contains(Second)",
'column: should display one closed header with "Second"'
);
assert.containsOnce(
- pivot,
+ target,
"tbody .o_pivot_header_cell_opened",
"row: should have one opened header"
);
assert.containsOnce(
- pivot,
+ target,
"tbody .o_pivot_header_cell_closed:contains(xphone)",
'row: should display one closed header with "xphone"'
);
assert.containsOnce(
- pivot,
+ target,
"tbody .o_pivot_header_cell_closed:contains(xpad)",
'row: should display one closed header with "xpad"'
);
assert.strictEqual(
- pivot.el.querySelector("tbody tr").querySelectorAll("td")[2].innerText,
+ target.querySelector("tbody tr").querySelectorAll("td")[2].innerText,
"32",
"selected measure should be foo, with total 32"
);
@@ -3027,7 +3020,7 @@ QUnit.module("Views", (hooks) => {
group_operator: "sum",
};
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3043,34 +3036,34 @@ QUnit.module("Views", (hooks) => {
});
assert.containsOnce(
- pivot,
+ target,
"thead .o_pivot_header_cell_opened",
"column: should have one opened header"
);
assert.containsOnce(
- pivot,
+ target,
"thead .o_pivot_header_cell_closed:contains(First)",
"column: should display one closed header with 'First'"
);
assert.containsOnce(
- pivot,
+ target,
"thead .o_pivot_header_cell_closed:contains(Second)",
"column: should display one closed header with 'Second'"
);
// With pivot_row_groupby, groupBy customer should replace and eventually display product_id
assert.containsOnce(
- pivot,
+ target,
"tbody .o_pivot_header_cell_opened",
"row: should have one opened header"
);
assert.containsOnce(
- pivot,
+ target,
"tbody .o_pivot_header_cell_closed:contains(xphone)",
"row: should display one closed header with 'xphone'"
);
assert.containsOnce(
- pivot,
+ target,
"tbody .o_pivot_header_cell_closed:contains(xpad)",
"row: should display one closed header with 'xpad'"
);
@@ -3082,7 +3075,7 @@ QUnit.module("Views", (hooks) => {
// '__count__' measure.
assert.expect(4);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3101,19 +3094,19 @@ QUnit.module("Views", (hooks) => {
},
});
- await click(pivot.el.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
- assert.containsOnce(pivot, ".o_cp_bottom_left .dropdown-item");
+ await click(target.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
+ assert.containsOnce(target, ".o_cp_bottom_left .dropdown-item");
assert.strictEqual(
- pivot.el.querySelector(".o_cp_bottom_left .dropdown-item").innerText,
+ target.querySelector(".o_cp_bottom_left .dropdown-item").innerText,
"Count"
);
- assert.hasClass(pivot.el.querySelector(".o_cp_bottom_left .dropdown-item"), "selected");
+ assert.hasClass(target.querySelector(".o_cp_bottom_left .dropdown-item"), "selected");
});
QUnit.test("not use a many2one as a measure by default", async function (assert) {
assert.expect(3);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3123,13 +3116,13 @@ QUnit.module("Views", (hooks) => {
`,
});
- await click(pivot.el.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
- assert.containsOnce(pivot, ".o_cp_bottom_left .dropdown-item");
+ await click(target.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
+ assert.containsOnce(target, ".o_cp_bottom_left .dropdown-item");
assert.strictEqual(
- pivot.el.querySelector(".o_cp_bottom_left .dropdown-item").innerText,
+ target.querySelector(".o_cp_bottom_left .dropdown-item").innerText,
"Count"
);
- assert.hasClass(pivot.el.querySelector(".o_cp_bottom_left .dropdown-item"), "selected");
+ assert.hasClass(target.querySelector(".o_cp_bottom_left .dropdown-item"), "selected");
});
QUnit.test(
@@ -3137,7 +3130,7 @@ QUnit.module("Views", (hooks) => {
async function (assert) {
assert.expect(3);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3148,14 +3141,14 @@ QUnit.module("Views", (hooks) => {
`,
additionalMeasures: ["product_id"],
});
- await click(pivot.el.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
- assert.containsN(pivot, ".o_cp_bottom_left .dropdown-item", 2);
+ await click(target.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
+ assert.containsN(target, ".o_cp_bottom_left .dropdown-item", 2);
assert.strictEqual(
- pivot.el.querySelector(".o_cp_bottom_left .dropdown-item").innerText,
+ target.querySelector(".o_cp_bottom_left .dropdown-item").innerText,
"Product"
);
assert.doesNotHaveClass(
- pivot.el.querySelector(".o_cp_bottom_left .dropdown-item"),
+ target.querySelector(".o_cp_bottom_left .dropdown-item"),
"selected"
);
}
@@ -3164,7 +3157,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("pivot view with many2one field as a measure", async function (assert) {
assert.expect(1);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3176,7 +3169,7 @@ QUnit.module("Views", (hooks) => {
});
assert.strictEqual(
- pivot.el.querySelector("table tbody tr").innerText.replace(/\s/g, ""),
+ target.querySelector("table tbody tr").innerText.replace(/\s/g, ""),
"Total1122",
"should display product_id count as measure"
);
@@ -3185,7 +3178,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("m2o as measure, drilling down into data", async function (assert) {
assert.expect(1);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3194,15 +3187,15 @@ QUnit.module("Views", (hooks) => {
`,
});
- await click(pivot.el.querySelector("tbody .o_pivot_header_cell_closed"));
+ await click(target.querySelector("tbody .o_pivot_header_cell_closed"));
// click on date by month
- await mouseEnter(pivot.el.querySelector("tbody .dropdown-menu .dropdown-toggle"));
+ await mouseEnter(target.querySelector("tbody .dropdown-menu .dropdown-toggle"));
await click(
- pivot.el.querySelectorAll("tbody .dropdown-menu .dropdown-menu .dropdown-item")[3]
+ target.querySelectorAll("tbody .dropdown-menu .dropdown-menu .dropdown-item")[3]
);
assert.strictEqual(
- [...pivot.el.querySelectorAll(".o_pivot_cell_value")].map((c) => c.innerText).join(""),
+ [...target.querySelectorAll(".o_pivot_cell_value")].map((c) => c.innerText).join(""),
"2112",
"should have loaded the proper data"
);
@@ -3213,7 +3206,7 @@ QUnit.module("Views", (hooks) => {
async function (assert) {
assert.expect(1);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3224,10 +3217,10 @@ QUnit.module("Views", (hooks) => {
additionalMeasures: ["product_id"],
});
- await click(pivot.el.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
- await click(pivot.el.querySelector(".o_cp_bottom_left .dropdown-item"));
+ await click(target.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
+ await click(target.querySelector(".o_cp_bottom_left .dropdown-item"));
assert.strictEqual(
- [...pivot.el.querySelectorAll(".o_pivot_cell_value")]
+ [...target.querySelectorAll(".o_pivot_cell_value")]
.map((c) => c.innerText)
.join(""),
"421131",
@@ -3241,7 +3234,7 @@ QUnit.module("Views", (hooks) => {
async function (assert) {
assert.expect(1);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3251,11 +3244,11 @@ QUnit.module("Views", (hooks) => {
`,
});
- await click(pivot.el.querySelector("tbody .o_pivot_header_cell_closed"));
- await click(pivot.el.querySelectorAll("tbody .dropdown-item")[4]);
+ await click(target.querySelector("tbody .o_pivot_header_cell_closed"));
+ await click(target.querySelectorAll("tbody .dropdown-item")[4]);
assert.strictEqual(
- [...pivot.el.querySelectorAll(".o_pivot_cell_value")]
+ [...target.querySelectorAll(".o_pivot_cell_value")]
.map((c) => c.innerText)
.join(""),
"211",
@@ -3273,7 +3266,7 @@ QUnit.module("Views", (hooks) => {
pivot_measures: ["foo"],
pivot_row_groupby: ["product_id"],
};
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3294,33 +3287,33 @@ QUnit.module("Views", (hooks) => {
});
// Set a column groupby
- await click(pivot.el.querySelector("thead .o_pivot_header_cell_closed"));
- await click(pivot.el.querySelectorAll("thead .dropdown-item")[1]);
+ await click(target.querySelector("thead .o_pivot_header_cell_closed"));
+ await click(target.querySelectorAll("thead .dropdown-item")[1]);
// Set a Row groupby
- await click(pivot.el.querySelector("tbody .o_pivot_header_cell_closed"));
- await click(pivot.el.querySelectorAll("tbody .dropdown-item")[4]);
+ await click(target.querySelector("tbody .o_pivot_header_cell_closed"));
+ await click(target.querySelectorAll("tbody .dropdown-item")[4]);
// Add a filter
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "Some Filter");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "Some Filter");
assert.containsOnce(
- pivot,
+ target,
"tbody .o_pivot_header_cell_closed",
"There should be only one product line because of the domain"
);
assert.strictEqual(
- pivot.el.querySelector("tbody .o_pivot_header_cell_closed").innerText,
+ target.querySelector("tbody .o_pivot_header_cell_closed").innerText,
"xpad",
"The product should be the right one"
);
// Save current search to favorite
- await toggleFavoriteMenu(pivot);
- await toggleSaveFavorite(pivot);
- await editFavoriteName(pivot, "My favorite");
- await saveFavorite(pivot);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "My favorite");
+ await saveFavorite(target);
});
QUnit.test(
@@ -3329,7 +3322,7 @@ QUnit.module("Views", (hooks) => {
assert.expect(6);
let def;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3349,22 +3342,22 @@ QUnit.module("Views", (hooks) => {
},
});
- assert.containsOnce(pivot, ".o_pivot_cell_value", "should have 1 cell initially");
- assert.containsOnce(pivot, "tbody tr", "should have 1 row initially");
+ assert.containsOnce(target, ".o_pivot_cell_value", "should have 1 cell initially");
+ assert.containsOnce(target, "tbody tr", "should have 1 row initially");
def = makeDeferred();
- await toggleGroupByMenu(pivot);
- await toggleMenuItem(pivot, "Product");
- await toggleMenuItem(pivot, "Customer");
+ await toggleGroupByMenu(target);
+ await toggleMenuItem(target, "Product");
+ await toggleMenuItem(target, "Customer");
- assert.containsOnce(pivot, ".o_pivot_cell_value", "should still have 1 cell");
- assert.containsOnce(pivot, "tbody tr", "should still have 1 row");
+ assert.containsOnce(target, ".o_pivot_cell_value", "should still have 1 cell");
+ assert.containsOnce(target, "tbody tr", "should still have 1 row");
await def.resolve();
await nextTick();
- assert.containsN(pivot, ".o_pivot_cell_value", 6, "should have 6 cells");
- assert.containsN(pivot, "tbody tr", 6, "should have 6 rows");
+ assert.containsN(target, ".o_pivot_cell_value", 6, "should have 6 cells");
+ assert.containsN(target, "tbody tr", 6, "should have 6 rows");
}
);
@@ -3389,7 +3382,7 @@ QUnit.module("Views", (hooks) => {
group_operator: "sum",
};
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3402,9 +3395,9 @@ QUnit.module("Views", (hooks) => {
`,
});
- await click(pivot.el.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
+ await click(target.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
assert.strictEqual(
- [...pivot.el.querySelectorAll(".o_cp_bottom_left .dropdown-item")]
+ [...target.querySelectorAll(".o_cp_bottom_left .dropdown-item")]
.map((i) => i.innerText)
.join(""),
"bouhFoomoddZipCount"
@@ -3414,7 +3407,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("pivot view should use default order for auto sorting", async function (assert) {
assert.expect(1);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3425,7 +3418,7 @@ QUnit.module("Views", (hooks) => {
});
assert.hasClass(
- pivot.el.querySelector("thead th.o_pivot_measure_row"),
+ target.querySelector("thead th.o_pivot_measure_row"),
"o_pivot_sort_order_asc"
);
});
@@ -3435,7 +3428,7 @@ QUnit.module("Views", (hooks) => {
var rpcCount = 0;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3449,22 +3442,22 @@ QUnit.module("Views", (hooks) => {
});
assert.containsN(
- pivot,
+ target,
"tbody tr",
3,
"should have 3 rows: 1 for the open header, and 2 for data"
);
let values = ["4", "1", "3"];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
rpcCount = 0;
- await click(pivot.el.querySelector(".o_pivot_flip_button"));
+ await click(target.querySelector(".o_pivot_flip_button"));
assert.strictEqual(rpcCount, 0, "should not have done any rpc");
- assert.containsOnce(pivot, "tbody tr", "should have 1 rows: 1 for the main header");
+ assert.containsOnce(target, "tbody tr", "should have 1 rows: 1 for the main header");
values = ["1", "3", "4"];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
});
QUnit.test("rendering of pivot view with comparison", async function (assert) {
@@ -3477,7 +3470,7 @@ QUnit.module("Views", (hooks) => {
patchDate(2016, 11, 20, 1, 0, 0);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3523,29 +3516,29 @@ QUnit.module("Views", (hooks) => {
});
// with no data
- await toggleComparisonMenu(pivot);
- await toggleMenuItem(pivot, "Date: Previous period");
+ await toggleComparisonMenu(target);
+ await toggleMenuItem(target, "Date: Previous period");
- assert.containsOnce(pivot, "p.o_view_nocontent_empty_folder");
+ assert.containsOnce(target, "p.o_view_nocontent_empty_folder");
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "Date");
- await toggleMenuItemOption(pivot, "Date", "December");
- await toggleMenuItemOption(pivot, "Date", "2016");
- await toggleMenuItemOption(pivot, "Date", "2015");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "Date");
+ await toggleMenuItemOption(target, "Date", "December");
+ await toggleMenuItemOption(target, "Date", "2016");
+ await toggleMenuItemOption(target, "Date", "2015");
assert.containsN(
- pivot,
+ target,
".o_pivot thead tr:last th",
9,
"last header row should contains 9 cells (3*[December 2016, November 2016, Variation]"
);
let values = ["19", "0", "-100%", "0", "13", "100%", "19", "13", "-31.58%"];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
// with data, with row groupby
- await click(pivot.el.querySelector("tbody .o_pivot_header_cell_closed"));
- await click(pivot.el.querySelectorAll("tbody .dropdown-menu .dropdown-item")[4]);
+ await click(target.querySelector("tbody .o_pivot_header_cell_closed"));
+ await click(target.querySelectorAll("tbody .dropdown-menu .dropdown-item")[4]);
values = [
"19",
"0",
@@ -3572,15 +3565,11 @@ QUnit.module("Views", (hooks) => {
"12",
"100%",
];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
- await click(pivot.el.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
- await click(
- pivot.el.querySelectorAll(".o_cp_bottom_left .dropdown-menu .dropdown-item")[0]
- );
- await click(
- pivot.el.querySelectorAll(".o_cp_bottom_left .dropdown-menu .dropdown-item")[1]
- );
+ await click(target.querySelector(".o_cp_bottom_left button.dropdown-toggle"));
+ await click(target.querySelectorAll(".o_cp_bottom_left .dropdown-menu .dropdown-item")[0]);
+ await click(target.querySelectorAll(".o_cp_bottom_left .dropdown-menu .dropdown-item")[1]);
values = [
"1",
"0",
@@ -3607,14 +3596,10 @@ QUnit.module("Views", (hooks) => {
"1",
"100%",
];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
- await click(
- pivot.el.querySelectorAll(".o_cp_bottom_left .dropdown-menu .dropdown-item")[2]
- );
- await click(
- pivot.el.querySelectorAll(".o_cp_bottom_left .dropdown-menu .dropdown-item")[1]
- );
+ await click(target.querySelectorAll(".o_cp_bottom_left .dropdown-menu .dropdown-item")[2]);
+ await click(target.querySelectorAll(".o_cp_bottom_left .dropdown-menu .dropdown-item")[1]);
values = [
"2",
"0",
@@ -3641,16 +3626,16 @@ QUnit.module("Views", (hooks) => {
"1",
"100%",
];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
- await click(pivot.el.querySelector("thead .o_pivot_header_cell_opened"));
+ await click(target.querySelector("thead .o_pivot_header_cell_opened"));
values = ["2", "2", "0%", "2", "1", "-50%", "0", "1", "100%"];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
- await toggleFavoriteMenu(pivot);
- await toggleSaveFavorite(pivot);
- await editFavoriteName(pivot, "Fav");
- await saveFavorite(pivot);
+ await toggleFavoriteMenu(target);
+ await toggleSaveFavorite(target);
+ await editFavoriteName(target, "Fav");
+ await saveFavorite(target);
});
QUnit.test("export data in excel with comparison", async function (assert) {
@@ -3685,7 +3670,7 @@ QUnit.module("Views", (hooks) => {
return Promise.resolve();
});
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3702,25 +3687,25 @@ QUnit.module("Views", (hooks) => {
});
// open comparison menu
- await toggleComparisonMenu(pivot);
+ await toggleComparisonMenu(target);
// compare October 2016 to September 2016
- await toggleMenuItem(pivot, "Date: Previous period");
+ await toggleMenuItem(target, "Date: Previous period");
// With the data above, the time ranges contain no record.
- assert.containsOnce(pivot, "p.o_view_nocontent_empty_folder", "there should be no data");
+ assert.containsOnce(target, "p.o_view_nocontent_empty_folder", "there should be no data");
// export data should be impossible since the pivot buttons
// are deactivated (exception: the 'Measures' button).
- assert.ok(pivot.el.querySelector(".o_control_panel button.o_pivot_download").disabled);
+ assert.ok(target.querySelector(".o_control_panel button.o_pivot_download").disabled);
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "Date");
- await toggleMenuItemOption(pivot, "Date", "December");
- await toggleMenuItemOption(pivot, "Date", "October");
- assert.notOk(pivot.el.querySelector(".o_control_panel button.o_pivot_download").disabled);
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "Date");
+ await toggleMenuItemOption(target, "Date", "December");
+ await toggleMenuItemOption(target, "Date", "October");
+ assert.notOk(target.querySelector(".o_control_panel button.o_pivot_download").disabled);
// With the data above, the time ranges contain some records.
// export data. Should execute 'get_file'
- await click(pivot.el.querySelector(".o_control_panel button.o_pivot_download"));
+ await click(target.querySelector(".o_control_panel button.o_pivot_download"));
assert.verifySteps([
// col group headers
@@ -3753,7 +3738,7 @@ QUnit.module("Views", (hooks) => {
patchDate(2016, 11, 20, 1, 0, 0);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3779,13 +3764,13 @@ QUnit.module("Views", (hooks) => {
mockMock = true;
// compare December 2016 to November 2016
- await toggleComparisonMenu(pivot);
- await toggleMenuItem(pivot, "Date: Previous period");
+ await toggleComparisonMenu(target);
+ await toggleMenuItem(target, "Date: Previous period");
const values = ["0", "4", "100%", "0", "2", "100%", "0", "2", "100%"];
- assert.strictEqual(getCurrentValues(pivot.el), values.join(","));
+ assert.strictEqual(getCurrentValues(target), values.join(","));
assert.containsN(
- pivot,
+ target,
".o_pivot_header_cell_closed",
3,
"there should be exactly three closed header ('Total','First', 'Second')"
@@ -3803,7 +3788,7 @@ QUnit.module("Views", (hooks) => {
serverData.models.partner.records[3].date = "2016-11-03";
patchDate(2016, 11, 20, 1, 0, 0);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -3822,8 +3807,8 @@ QUnit.module("Views", (hooks) => {
});
// compare December 2016 to November 2016
- await toggleComparisonMenu(pivot);
- await toggleMenuItem(pivot, "Date: Previous period");
+ await toggleComparisonMenu(target);
+ await toggleMenuItem(target, "Date: Previous period");
// initial sanity check
let values = [
@@ -3861,10 +3846,10 @@ QUnit.module("Views", (hooks) => {
"1",
"100%",
];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
// click on 'Foo' in column Total/Company (should sort by the period of interest, ASC)
- await click(pivot.el.querySelector(".o_pivot_measure_row"));
+ await click(target.querySelector(".o_pivot_measure_row"));
values = [
"17",
"12",
@@ -3900,10 +3885,10 @@ QUnit.module("Views", (hooks) => {
"0",
"-100%",
];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
// click again on 'Foo' in column Total/Company (should sort by the period of interest, DESC)
- await click(pivot.el.querySelector(".o_pivot_measure_row"));
+ await click(target.querySelector(".o_pivot_measure_row"));
values = [
"17",
"12",
@@ -3939,10 +3924,10 @@ QUnit.module("Views", (hooks) => {
"1",
"100%",
];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
// click on 'This Month' in column Total/Individual/Foo
- await click(pivot.el.querySelectorAll(".o_pivot_origin_row")[3]);
+ await click(target.querySelectorAll(".o_pivot_origin_row")[3]);
values = [
"17",
"12",
@@ -3978,10 +3963,10 @@ QUnit.module("Views", (hooks) => {
"0",
"-100%",
];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
// click on 'Previous Period' in column Total/Individual/Foo
- await click(pivot.el.querySelectorAll(".o_pivot_origin_row")[4]);
+ await click(target.querySelectorAll(".o_pivot_origin_row")[4]);
values = [
"17",
"12",
@@ -4017,10 +4002,10 @@ QUnit.module("Views", (hooks) => {
"1",
"100%",
];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
// click on 'Variation' in column Total/Foo
- await click(pivot.el.querySelectorAll(".o_pivot_origin_row")[8]);
+ await click(target.querySelectorAll(".o_pivot_origin_row")[8]);
values = [
"17",
"12",
@@ -4056,14 +4041,14 @@ QUnit.module("Views", (hooks) => {
"1",
"100%",
];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
}
);
QUnit.test("Click on the measure list but not on a menu item", async function (assert) {
assert.expect(4);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -4075,21 +4060,21 @@ QUnit.module("Views", (hooks) => {
arch: ``,
});
- assert.containsNone(pivot, ".o_cp_bottom_left .dropdown-menu");
+ assert.containsNone(target, ".o_cp_bottom_left .dropdown-menu");
// open the "Measures" menu
- await click(pivot.el.querySelector(".o_cp_bottom_left .dropdown-toggle"));
- assert.containsOnce(pivot, ".o_cp_bottom_left .dropdown-menu");
+ await click(target.querySelector(".o_cp_bottom_left .dropdown-toggle"));
+ assert.containsOnce(target, ".o_cp_bottom_left .dropdown-menu");
// click on the divider in the "Measures" menu does not crash
- await click(pivot.el.querySelector(".o_cp_bottom_left .dropdown-menu .dropdown-divider"));
+ await click(target.querySelector(".o_cp_bottom_left .dropdown-menu .dropdown-divider"));
// the menu should still be open
- assert.containsOnce(pivot, ".o_cp_bottom_left .dropdown-menu");
+ assert.containsOnce(target, ".o_cp_bottom_left .dropdown-menu");
// click on the measure list but not on a menu item or the separator
- await click(pivot.el.querySelector(".o_cp_bottom_left .dropdown-menu"));
+ await click(target.querySelector(".o_cp_bottom_left .dropdown-menu"));
// the menu should still be open
- assert.containsOnce(pivot, ".o_cp_bottom_left .dropdown-menu");
+ assert.containsOnce(target, ".o_cp_bottom_left .dropdown-menu");
});
QUnit.test(
@@ -4179,7 +4164,7 @@ QUnit.module("Views", (hooks) => {
serverData.models.partner.records[3].date = "2016-11-03";
patchDate(2016, 11, 20, 1, 0, 0);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -4198,8 +4183,8 @@ QUnit.module("Views", (hooks) => {
});
// compare December 2016 to November 2016
- await toggleComparisonMenu(pivot);
- await toggleMenuItem(pivot, "Date: Previous period");
+ await toggleComparisonMenu(target);
+ await toggleMenuItem(target, "Date: Previous period");
// initial sanity check
let values = [
@@ -4237,10 +4222,10 @@ QUnit.module("Views", (hooks) => {
"1",
"100%",
];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
// flip table
- await click(pivot.el.querySelector(".o_pivot_flip_button"));
+ await click(target.querySelector(".o_pivot_flip_button"));
values = [
"2",
@@ -4277,7 +4262,7 @@ QUnit.module("Views", (hooks) => {
"1",
"-50%",
];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
}
);
@@ -4290,7 +4275,7 @@ QUnit.module("Views", (hooks) => {
serverData.models.partner.records[3].date = "2016-11-03";
patchDate(2016, 11, 20, 1, 0, 0);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -4308,21 +4293,21 @@ QUnit.module("Views", (hooks) => {
});
assert.deepEqual(
- [...pivot.el.querySelectorAll("thead th")].map((th) => th.innerText),
+ [...target.querySelectorAll("thead th")].map((th) => th.innerText),
["", "Total", "", "Company", "individual", "Foo", "Foo", "Foo"],
"The col headers should be as expected"
);
assert.deepEqual(
- [...pivot.el.querySelectorAll("tbody th")].map((th) => th.innerText),
+ [...target.querySelectorAll("tbody th")].map((th) => th.innerText),
["Total", "2016-11-03", "2016-11-22", "2016-12-15", "2016-12-17"],
"The row headers should be as expected"
);
// flip
- await click(pivot.el.querySelector(".o_pivot_flip_button"));
+ await click(target.querySelector(".o_pivot_flip_button"));
assert.deepEqual(
- [...pivot.el.querySelectorAll("thead th")].map((th) => th.innerText),
+ [...target.querySelectorAll("thead th")].map((th) => th.innerText),
[
"",
"Total",
@@ -4340,22 +4325,22 @@ QUnit.module("Views", (hooks) => {
"The col headers should be as expected"
);
assert.deepEqual(
- [...pivot.el.querySelectorAll("tbody th")].map((th) => th.innerText),
+ [...target.querySelectorAll("tbody th")].map((th) => th.innerText),
["Total", "Company", "individual"],
"The row headers should be as expected"
);
// Filter on December 2016
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "Date");
- await toggleMenuItemOption(pivot, "Date", "December");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "Date");
+ await toggleMenuItemOption(target, "Date", "December");
// compare December 2016 to November 2016
- await toggleComparisonMenu(pivot);
- await toggleMenuItem(pivot, "Date: Previous period");
+ await toggleComparisonMenu(target);
+ await toggleMenuItem(target, "Date: Previous period");
assert.deepEqual(
- [...pivot.el.querySelectorAll("thead th")].map((th) => th.innerText),
+ [...target.querySelectorAll("thead th")].map((th) => th.innerText),
[
"",
"Total",
@@ -4388,7 +4373,7 @@ QUnit.module("Views", (hooks) => {
"The col headers should be as expected"
);
assert.deepEqual(
- [...pivot.el.querySelectorAll("tbody th")].map((th) => th.innerText),
+ [...target.querySelectorAll("tbody th")].map((th) => th.innerText),
["Total", "Company", "individual"],
"The row headers should be as expected"
);
@@ -4415,7 +4400,7 @@ QUnit.module("Views", (hooks) => {
};
serviceRegistry.add("action", fakeActionService, { force: true });
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -4425,7 +4410,7 @@ QUnit.module("Views", (hooks) => {
`,
});
- await click(pivot.el.querySelectorAll(".o_value")[1]);
+ await click(target.querySelectorAll(".o_value")[1]);
}
);
QUnit.test(
@@ -4443,7 +4428,7 @@ QUnit.module("Views", (hooks) => {
serverData.models.partner.records[2].favorite_animal = "None";
patchDate(2016, 11, 20, 1, 0, 0);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -4454,12 +4439,12 @@ QUnit.module("Views", (hooks) => {
});
assert.deepEqual(
- [...pivot.el.querySelectorAll("thead th")].map((th) => th.innerText),
+ [...target.querySelectorAll("thead th")].map((th) => th.innerText),
["", "Total", "Count"],
"The col headers should be as expected"
);
assert.deepEqual(
- [...pivot.el.querySelectorAll("tbody th")].map((th) => th.innerText),
+ [...target.querySelectorAll("tbody th")].map((th) => th.innerText),
["Total", "Dog", "None", "false", "None"],
"The row headers should be as expected"
);
@@ -4471,7 +4456,7 @@ QUnit.module("Views", (hooks) => {
async function (assert) {
assert.expect(8);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -4483,60 +4468,60 @@ QUnit.module("Views", (hooks) => {
});
assert.deepEqual(
- [...pivot.el.querySelectorAll("thead th")].map((th) => th.innerText),
+ [...target.querySelectorAll("thead th")].map((th) => th.innerText),
["", "Total", "Foo"],
"The col headers should be as expected"
);
assert.deepEqual(
- [...pivot.el.querySelectorAll("tbody th")].map((th) => th.innerText),
+ [...target.querySelectorAll("tbody th")].map((th) => th.innerText),
["Total"],
"The row headers should be as expected"
);
// open group by menu and add new groupby
- await toggleGroupByMenu(pivot);
- await toggleAddCustomGroup(pivot);
- await applyGroup(pivot);
+ await toggleGroupByMenu(target);
+ await toggleAddCustomGroup(target);
+ await applyGroup(target);
assert.deepEqual(
- [...pivot.el.querySelectorAll("thead th")].map((th) => th.innerText),
+ [...target.querySelectorAll("thead th")].map((th) => th.innerText),
["", "Total", "Foo"],
"The col headers should be as expected"
);
assert.deepEqual(
- [...pivot.el.querySelectorAll("tbody th")].map((th) => th.innerText),
+ [...target.querySelectorAll("tbody th")].map((th) => th.innerText),
["Total", "Company", "individual"],
"The row headers should be as expected"
);
// Set a Row groupby
- await click(pivot.el, "tbody tr:nth-child(2) .o_pivot_header_cell_closed");
- await click(pivot.el, "tbody .dropdown-menu .o_menu_item:nth-child(5)");
+ await click(target, "tbody tr:nth-child(2) .o_pivot_header_cell_closed");
+ await click(target, "tbody .dropdown-menu .o_menu_item:nth-child(5)");
assert.deepEqual(
- [...pivot.el.querySelectorAll("thead th")].map((th) => th.innerText),
+ [...target.querySelectorAll("thead th")].map((th) => th.innerText),
["", "Total", "Foo"],
"The col headers should be as expected"
);
assert.deepEqual(
- [...pivot.el.querySelectorAll("tbody th")].map((th) => th.innerText),
+ [...target.querySelectorAll("tbody th")].map((th) => th.innerText),
["Total", "Company", "xphone", "xpad", "individual"],
"The row headers should be as expected"
);
// open groupby menu generator and add a new groupby
- await toggleGroupByMenu(pivot);
- await toggleAddCustomGroup(pivot);
- await selectGroup(pivot, "bar");
- await applyGroup(pivot);
+ await toggleGroupByMenu(target);
+ await toggleAddCustomGroup(target);
+ await selectGroup(target, "bar");
+ await applyGroup(target);
assert.deepEqual(
- [...pivot.el.querySelectorAll("thead th")].map((th) => th.innerText),
+ [...target.querySelectorAll("thead th")].map((th) => th.innerText),
["", "Total", "Foo"],
"The col headers should be as expected"
);
assert.deepEqual(
- [...pivot.el.querySelectorAll("tbody th")].map((th) => th.innerText),
+ [...target.querySelectorAll("tbody th")].map((th) => th.innerText),
["Total", "Company", "Yes", "individual", "No", "Yes"],
"The row headers should be as expected"
);
@@ -4546,7 +4531,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("display only one dropdown menu", async function (assert) {
assert.expect(1);
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -4558,15 +4543,15 @@ QUnit.module("Views", (hooks) => {
});
// add a col groupby on Product
- await click(pivot.el.querySelector("thead th.o_pivot_header_cell_closed"));
- await click(pivot.el.querySelectorAll("thead .dropdown-menu .dropdown-item")[5]);
+ await click(target.querySelector("thead th.o_pivot_header_cell_closed"));
+ await click(target.querySelectorAll("thead .dropdown-menu .dropdown-item")[5]);
// Click on the two header dropdown togglers
- await click(pivot.el.querySelectorAll("thead th.o_pivot_header_cell_closed")[0]);
- await click(pivot.el.querySelectorAll("thead th.o_pivot_header_cell_closed")[1]);
+ await click(target.querySelectorAll("thead th.o_pivot_header_cell_closed")[0]);
+ await click(target.querySelectorAll("thead th.o_pivot_header_cell_closed")[1]);
assert.containsOnce(
- pivot,
+ target,
"thead .dropdown-menu",
"Only one dropdown should be displayed at a time"
);
@@ -4576,7 +4561,7 @@ QUnit.module("Views", (hooks) => {
assert.expect(1);
let isSecondReadGroup = false;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -4611,7 +4596,7 @@ QUnit.module("Views", (hooks) => {
"18", // Second
"14", // First
];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
});
QUnit.test("pivot rendering with boolean field", async function (assert) {
@@ -4629,7 +4614,7 @@ QUnit.module("Views", (hooks) => {
{ id: 2, bar: false, date: "2019-05-14" },
];
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -4642,21 +4627,21 @@ QUnit.module("Views", (hooks) => {
});
assert.strictEqual(
- $(pivot.el).find('tbody tr:contains("2019-12-14")').length,
+ $(target).find('tbody tr:contains("2019-12-14")').length,
1,
"There should be a first column"
);
assert.ok(
- $(pivot.el).find('tbody tr:contains("2019-12-14") [type="checkbox"]').is(":checked"),
+ $(target).find('tbody tr:contains("2019-12-14") [type="checkbox"]').is(":checked"),
"first column contains checkbox and value should be ticked"
);
assert.strictEqual(
- $(pivot.el).find('tbody tr:contains("2019-05-14")').length,
+ $(target).find('tbody tr:contains("2019-05-14")').length,
1,
"There should be a second column"
);
assert.notOk(
- $(pivot.el).find('tbody tr:contains("2019-05-14") [type="checkbox"]').is(":checked"),
+ $(target).find('tbody tr:contains("2019-05-14") [type="checkbox"]').is(":checked"),
"second column should have checkbox that is not checked by default"
);
});
@@ -4673,7 +4658,7 @@ QUnit.module("Views", (hooks) => {
`,
};
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -4684,13 +4669,13 @@ QUnit.module("Views", (hooks) => {
},
});
- assert.containsOnce(pivot, ".o_view_nocontent .abc");
- assert.containsNone(pivot, "table");
+ assert.containsOnce(target, ".o_view_nocontent .abc");
+ assert.containsNone(target, "table");
- await removeFacet(pivot);
+ await removeFacet(target);
- assert.containsNone(pivot, ".o_view_nocontent .abc");
- assert.containsOnce(pivot, "table");
+ assert.containsNone(target, ".o_view_nocontent .abc");
+ assert.containsOnce(target, "table");
});
QUnit.test("empty pivot view with sample data", async function (assert) {
@@ -4706,7 +4691,7 @@ QUnit.module("Views", (hooks) => {
`,
};
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -4717,16 +4702,16 @@ QUnit.module("Views", (hooks) => {
},
});
- assert.hasClass(pivot.el, "o_view_sample_data");
- assert.containsOnce(pivot, ".o_view_nocontent .abc");
- assert.containsOnce(pivot, "table.o_sample_data_disabled");
+ assert.hasClass(target.querySelector(".o_pivot_view"), "o_view_sample_data");
+ assert.containsOnce(target, ".o_view_nocontent .abc");
+ assert.containsOnce(target, "table.o_sample_data_disabled");
- await removeFacet(pivot);
+ await removeFacet(target);
- assert.doesNotHaveClass(pivot.el, "o_view_sample_data");
- assert.containsNone(pivot, ".o_view_nocontent .abc");
- assert.containsOnce(pivot, "table");
- assert.doesNotHaveClass(pivot.el.querySelector("table"), "o_sample_data_disabled");
+ assert.doesNotHaveClass(target, "o_view_sample_data");
+ assert.containsNone(target, ".o_view_nocontent .abc");
+ assert.containsOnce(target, "table");
+ assert.doesNotHaveClass(target.querySelector("table"), "o_sample_data_disabled");
});
QUnit.test("non empty pivot view with sample data", async function (assert) {
@@ -4742,7 +4727,7 @@ QUnit.module("Views", (hooks) => {
`,
};
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -4752,17 +4737,17 @@ QUnit.module("Views", (hooks) => {
},
});
- assert.doesNotHaveClass(pivot.el, "o_view_sample_data");
- assert.containsNone(pivot, ".o_view_nocontent .abc");
- assert.containsOnce(pivot, "table");
- assert.doesNotHaveClass(pivot.el.querySelector("table"), "o_sample_data_disabled");
+ assert.doesNotHaveClass(target, "o_view_sample_data");
+ assert.containsNone(target, ".o_view_nocontent .abc");
+ assert.containsOnce(target, "table");
+ assert.doesNotHaveClass(target.querySelector("table"), "o_sample_data_disabled");
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "Small Than 0");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "Small Than 0");
- assert.doesNotHaveClass(pivot.el, "o_view_sample_data");
- assert.containsOnce(pivot, ".o_view_nocontent .abc");
- assert.containsNone(pivot, "table");
+ assert.doesNotHaveClass(target, "o_view_sample_data");
+ assert.containsOnce(target, ".o_view_nocontent .abc");
+ assert.containsNone(target, "table");
});
QUnit.test("pivot is reloaded when leaving and coming back", async function (assert) {
@@ -4952,7 +4937,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test("consecutively toggle several measures", async function (assert) {
let def;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -4969,27 +4954,27 @@ QUnit.module("Views", (hooks) => {
},
});
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
// Toggle several measures (the reload is blocked, so all measures should be toggled in once)
def = makeDeferred();
- await toggleMenu(pivot, "Measures");
- await toggleMenuItem(pivot, "Product"); // add product
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
- await toggleMenuItem(pivot, "Foo"); // remove foo
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
- await toggleMenuItem(pivot, "Count"); // add count
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
+ await toggleMenu(target, "Measures");
+ await toggleMenuItem(target, "Product"); // add product
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
+ await toggleMenuItem(target, "Foo"); // remove foo
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
+ await toggleMenuItem(target, "Count"); // add count
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
def.resolve();
await nextTick();
- assert.strictEqual(getCurrentValues(pivot.el), ["2", "4", "1", "1", "1", "3"].join(","));
+ assert.strictEqual(getCurrentValues(target), ["2", "4", "1", "1", "1", "3"].join(","));
});
QUnit.test("flip axis while loading a filter", async function (assert) {
let def;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -5011,27 +4996,27 @@ QUnit.module("Views", (hooks) => {
});
const values = ["2", "1", "29", "32", "12", "12", "2", "1", "17", "20"];
- assert.strictEqual(getCurrentValues(pivot.el), values.join(","));
+ assert.strictEqual(getCurrentValues(target), values.join(","));
// Set a domain (this reload is delayed)
def = makeDeferred();
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "My Filter");
- assert.strictEqual(getCurrentValues(pivot.el), values.join(","));
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My Filter");
+ assert.strictEqual(getCurrentValues(target), values.join(","));
// Flip axis
- await click(pivot.el.querySelector(".o_pivot_flip_button"));
- assert.strictEqual(getCurrentValues(pivot.el), values.join(","));
+ await click(target.querySelector(".o_pivot_flip_button"));
+ assert.strictEqual(getCurrentValues(target), values.join(","));
def.resolve();
await nextTick();
- assert.strictEqual(getCurrentValues(pivot.el), ["20", "2", "1", "17"].join(","));
+ assert.strictEqual(getCurrentValues(target), ["20", "2", "1", "17"].join(","));
});
QUnit.test("sort rows while loading a filter", async function (assert) {
let def;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -5051,28 +5036,28 @@ QUnit.module("Views", (hooks) => {
},
});
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
// Set a domain (this reload is delayed)
def = makeDeferred();
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "My Filter");
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My Filter");
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
// Sort rows (this operation should be ignored as it concerns the old
// table, which will be replaced soon)
- await click(pivot.el.querySelector("th.o_pivot_measure_row"));
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
+ await click(target.querySelector("th.o_pivot_measure_row"));
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
def.resolve();
await nextTick();
- assert.strictEqual(getCurrentValues(pivot.el), ["20", "20"].join(","));
+ assert.strictEqual(getCurrentValues(target), ["20", "20"].join(","));
});
QUnit.test("close a group while loading a filter", async function (assert) {
let def;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -5092,28 +5077,28 @@ QUnit.module("Views", (hooks) => {
},
});
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
// Set a domain (this reload is delayed)
def = makeDeferred();
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "My Filter");
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My Filter");
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
// Close a group (this operation should be ignored as it concerns the old
// table, which will be replaced soon)
- await click(pivot.el.querySelector("tbody .o_pivot_header_cell_opened"));
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
+ await click(target.querySelector("tbody .o_pivot_header_cell_opened"));
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
def.resolve();
await nextTick();
- assert.strictEqual(getCurrentValues(pivot.el), ["20", "20"].join(","));
+ assert.strictEqual(getCurrentValues(target), ["20", "20"].join(","));
});
QUnit.test("add a groupby while loading a filter", async function (assert) {
let def;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -5133,29 +5118,29 @@ QUnit.module("Views", (hooks) => {
},
});
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
// Set a domain (this reload is delayed)
def = makeDeferred();
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "My Filter");
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My Filter");
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
// Add a groupby (this operation should be ignored as it concerns the old
// table, which will be replaced soon)
- await click(pivot.el.querySelector("thead .o_pivot_header_cell_closed"));
- await click(pivot.el.querySelector("thead .dropdown-menu .dropdown-item"));
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
+ await click(target.querySelector("thead .o_pivot_header_cell_closed"));
+ await click(target.querySelector("thead .dropdown-menu .dropdown-item"));
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
def.resolve();
await nextTick();
- assert.strictEqual(getCurrentValues(pivot.el), ["20", "20"].join(","));
+ assert.strictEqual(getCurrentValues(target), ["20", "20"].join(","));
});
QUnit.test("expand a group while loading a filter", async function (assert) {
let def;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -5176,33 +5161,33 @@ QUnit.module("Views", (hooks) => {
});
// Add a groupby, to have a group to expand afterwards
- await click(pivot.el.querySelector("tbody .o_pivot_header_cell_closed"));
- await click(pivot.el.querySelector("tbody .dropdown-menu .dropdown-item"));
+ await click(target.querySelector("tbody .o_pivot_header_cell_closed"));
+ await click(target.querySelector("tbody .dropdown-menu .dropdown-item"));
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "12", "20"].join(","));
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "12", "20"].join(","));
// Set a domain (this reload is delayed)
def = makeDeferred();
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "My Filter");
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "12", "20"].join(","));
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My Filter");
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "12", "20"].join(","));
// Expand a group (this operation should be ignored as it concerns the old
// table, which will be replaced soon)
- await click(pivot.el.querySelectorAll("tbody .o_pivot_header_cell_closed")[1]);
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "12", "20"].join(","));
+ await click(target.querySelectorAll("tbody .o_pivot_header_cell_closed")[1]);
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "12", "20"].join(","));
def.resolve();
await nextTick();
- assert.strictEqual(getCurrentValues(pivot.el), ["20", "20"].join(","));
+ assert.strictEqual(getCurrentValues(target), ["20", "20"].join(","));
});
QUnit.test(
"concurrent reloads: add a filter, and directly toggle a measure",
async function (assert) {
let def;
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -5222,32 +5207,32 @@ QUnit.module("Views", (hooks) => {
},
});
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
// Set a domain (this reload is delayed)
def = makeDeferred();
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "My Filter");
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "My Filter");
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
// Toggle a measure
- await toggleMenu(pivot, "Measures");
- await toggleMenuItem(pivot, "Count");
+ await toggleMenu(target, "Measures");
+ await toggleMenuItem(target, "Count");
- assert.strictEqual(getCurrentValues(pivot.el), ["32", "12", "20"].join(","));
+ assert.strictEqual(getCurrentValues(target), ["32", "12", "20"].join(","));
def.resolve();
await nextTick();
- assert.strictEqual(getCurrentValues(pivot.el), ["12", "1", "12", "1"].join(","));
+ assert.strictEqual(getCurrentValues(target), ["12", "1", "12", "1"].join(","));
}
);
QUnit.test(
"if no measure is set in arch, 'Count' is used as measure initially",
async function (assert) {
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -5255,7 +5240,7 @@ QUnit.module("Views", (hooks) => {
});
assert.deepEqual(
- [...pivot.el.querySelectorAll("thead th")].map((e) => e.innerText),
+ [...target.querySelectorAll("thead th")].map((e) => e.innerText),
["", "Total", "Count"]
);
}
@@ -5264,7 +5249,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test(
"if (at least) one measure is set in arch and display_quantity is false or unset, 'Count' is not used as measure initially",
async function (assert) {
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -5276,7 +5261,7 @@ QUnit.module("Views", (hooks) => {
});
assert.deepEqual(
- [...pivot.el.querySelectorAll("thead th")].map((e) => e.innerText),
+ [...target.querySelectorAll("thead th")].map((e) => e.innerText),
["", "Total", "Foo"]
);
}
@@ -5285,7 +5270,7 @@ QUnit.module("Views", (hooks) => {
QUnit.test(
"if (at least) one measure is set in arch and display_quantity is true, 'Count' is used as measure initially",
async function (assert) {
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -5297,7 +5282,7 @@ QUnit.module("Views", (hooks) => {
});
assert.deepEqual(
- [...pivot.el.querySelectorAll("thead th")].map((e) => e.innerText),
+ [...target.querySelectorAll("thead th")].map((e) => e.innerText),
["", "Total", "Count", "Foo"]
);
}
@@ -5308,24 +5293,24 @@ QUnit.module("Views", (hooks) => {
fields: {},
records: [{ id: 1, display_name: "The one" }],
};
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
arch: ``,
});
- await toggleMenu(pivot, "Measures");
+ await toggleMenu(target, "Measures");
// "Count" is the only measure available
assert.deepEqual(
- [...pivot.el.querySelectorAll(".o_cp_bottom_left .dropdown-menu .o_menu_item")].map(
+ [...target.querySelectorAll(".o_cp_bottom_left .dropdown-menu .o_menu_item")].map(
(e) => e.innerText
),
["Count"]
);
// No separator should be displayed in the menu "Measures"
- assert.containsNone(pivot, ".o_cp_bottom_left .dropdown-menu div.dropdown-divider");
+ assert.containsNone(target, ".o_cp_bottom_left .dropdown-menu div.dropdown-divider");
});
QUnit.test(
@@ -5343,7 +5328,7 @@ QUnit.module("Views", (hooks) => {
];
serverData.models.customer.records = [{ id: 1, display_name: "P" }];
- const pivot = await makeView({
+ await makeView({
type: "pivot",
resModel: "partner",
serverData,
@@ -5361,26 +5346,26 @@ QUnit.module("Views", (hooks) => {
});
// compare 2021 to 2020
- await toggleFilterMenu(pivot);
- await toggleMenuItem(pivot, "Date");
- await toggleMenuItemOption(pivot, "Date", "2021");
- await toggleComparisonMenu(pivot);
- await toggleMenuItem(pivot, 0);
+ await toggleFilterMenu(target);
+ await toggleMenuItem(target, "Date");
+ await toggleMenuItemOption(target, "Date", "2021");
+ await toggleComparisonMenu(target);
+ await toggleMenuItem(target, 0);
assert.deepEqual(
- [...pivot.el.querySelectorAll("th")].slice(0, 6).map((el) => el.innerText),
+ [...target.querySelectorAll("th")].slice(0, 6).map((el) => el.innerText),
["", "Total", "Count", "2020", "2021", "Variation"],
"The col headers should be as expected"
);
assert.deepEqual(
- [...pivot.el.querySelectorAll("th")].slice(6).map((el) => el.innerText),
+ [...target.querySelectorAll("th")].slice(6).map((el) => el.innerText),
["Total", "P", "B", "A"],
"The row headers should be as expected"
);
const values = ["1", "1", "0%", "1", "1", "0%", "1", "0", "-100%", "0", "1", "100%"];
- assert.strictEqual(getCurrentValues(pivot.el), values.join());
+ assert.strictEqual(getCurrentValues(target), values.join());
}
);
});