summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/control_panel/comparison_menu_tests.js
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/web/static/tests/control_panel/comparison_menu_tests.js
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/web/static/tests/control_panel/comparison_menu_tests.js')
-rw-r--r--addons/web/static/tests/control_panel/comparison_menu_tests.js145
1 files changed, 145 insertions, 0 deletions
diff --git a/addons/web/static/tests/control_panel/comparison_menu_tests.js b/addons/web/static/tests/control_panel/comparison_menu_tests.js
new file mode 100644
index 00000000..e376904f
--- /dev/null
+++ b/addons/web/static/tests/control_panel/comparison_menu_tests.js
@@ -0,0 +1,145 @@
+odoo.define('web.comparison_menu_tests', function (require) {
+ "use strict";
+
+ const {
+ controlPanel: cpHelpers,
+ createControlPanel,
+ mock,
+ } = require('web.test_utils');
+
+ const { patchDate } = mock;
+ const searchMenuTypes = ['filter', 'comparison'];
+
+ QUnit.module('Components', {
+ beforeEach() {
+ this.fields = {
+ birthday: { string: "Birthday", type: "date", store: true, sortable: true },
+ date_field: { string: "Date", type: "date", store: true, sortable: true },
+ float_field: { string: "Float", type: "float", group_operator: 'sum' },
+ foo: { string: "Foo", type: "char", store: true, sortable: true },
+ };
+ this.cpModelConfig = {
+ arch: `
+ <search>
+ <filter name="birthday" date="birthday"/>
+ <filter name="date_field" date="date_field"/>
+ </search>`,
+ fields: this.fields,
+ searchMenuTypes,
+ };
+ },
+ }, function () {
+
+ QUnit.module('ComparisonMenu');
+
+ QUnit.test('simple rendering', async function (assert) {
+ assert.expect(6);
+
+ const unpatchDate = patchDate(1997, 0, 9, 12, 0, 0);
+ const params = {
+ cpModelConfig: this.cpModelConfig,
+ cpProps: { fields: this.fields, searchMenuTypes },
+ };
+ const controlPanel = await createControlPanel(params);
+
+ assert.containsOnce(controlPanel, ".o_dropdown.o_filter_menu");
+ assert.containsNone(controlPanel, ".o_dropdown.o_comparison_menu");
+
+ await cpHelpers.toggleFilterMenu(controlPanel);
+ await cpHelpers.toggleMenuItem(controlPanel, "Birthday");
+ await cpHelpers.toggleMenuItemOption(controlPanel, "Birthday", "January");
+
+ assert.containsOnce(controlPanel, 'div.o_comparison_menu > button i.fa.fa-adjust');
+ assert.strictEqual(controlPanel.el.querySelector('div.o_comparison_menu > button span').innerText.trim(), "Comparison");
+
+ await cpHelpers.toggleComparisonMenu(controlPanel);
+
+ const comparisonOptions = [...controlPanel.el.querySelectorAll(
+ '.o_comparison_menu li'
+ )];
+ assert.strictEqual(comparisonOptions.length, 2);
+ assert.deepEqual(
+ comparisonOptions.map(e => e.innerText),
+ ["Birthday: Previous Period", "Birthday: Previous Year"]
+ );
+
+ controlPanel.destroy();
+ unpatchDate();
+ });
+
+ QUnit.test('activate a comparison works', async function (assert) {
+ assert.expect(5);
+
+ const unpatchDate = patchDate(1997, 0, 9, 12, 0, 0);
+ const params = {
+ cpModelConfig: this.cpModelConfig,
+ cpProps: { fields: this.fields, searchMenuTypes },
+ };
+ const controlPanel = await createControlPanel(params);
+
+ await cpHelpers.toggleFilterMenu(controlPanel);
+ await cpHelpers.toggleMenuItem(controlPanel, "Birthday");
+ await cpHelpers.toggleMenuItemOption(controlPanel, "Birthday", "January");
+ await cpHelpers.toggleComparisonMenu(controlPanel);
+ await cpHelpers.toggleMenuItem(controlPanel, "Birthday: Previous Period");
+
+ assert.deepEqual(cpHelpers.getFacetTexts(controlPanel), [
+ "Birthday: January 1997",
+ "Birthday: Previous Period",
+ ]);
+
+ await cpHelpers.toggleFilterMenu(controlPanel);
+ await cpHelpers.toggleMenuItem(controlPanel, "Date");
+ await cpHelpers.toggleMenuItemOption(controlPanel, "Date", "December");
+ await cpHelpers.toggleComparisonMenu(controlPanel);
+ await cpHelpers.toggleMenuItem(controlPanel, "Date: Previous Year");
+
+ assert.deepEqual(cpHelpers.getFacetTexts(controlPanel), [
+ ["Birthday: January 1997", "Date: December 1996"].join("or"),
+ "Date: Previous Year",
+ ]);
+
+ await cpHelpers.toggleFilterMenu(controlPanel);
+ await cpHelpers.toggleMenuItem(controlPanel, "Date");
+ await cpHelpers.toggleMenuItemOption(controlPanel, "Date", "1996");
+
+ assert.deepEqual(cpHelpers.getFacetTexts(controlPanel), [
+ "Birthday: January 1997",
+ ]);
+
+ await cpHelpers.toggleComparisonMenu(controlPanel);
+ await cpHelpers.toggleMenuItem(controlPanel, "Birthday: Previous Year");
+
+ assert.deepEqual(cpHelpers.getFacetTexts(controlPanel), [
+ "Birthday: January 1997",
+ "Birthday: Previous Year",
+ ]);
+
+ await cpHelpers.removeFacet(controlPanel);
+
+ assert.deepEqual(cpHelpers.getFacetTexts(controlPanel), []);
+
+ controlPanel.destroy();
+ unpatchDate();
+ });
+
+ QUnit.test('no timeRanges key in search query if "comparison" not in searchMenuTypes', async function (assert) {
+ assert.expect(1);
+
+ this.cpModelConfig.searchMenuTypes = ['filter'];
+ const params = {
+ cpModelConfig: this.cpModelConfig,
+ cpProps: { fields: this.fields, searchMenuTypes: ['filter'] },
+ };
+ const controlPanel = await createControlPanel(params);
+
+ await cpHelpers.toggleFilterMenu(controlPanel);
+ await cpHelpers.toggleMenuItem(controlPanel, "Birthday");
+ await cpHelpers.toggleMenuItemOption(controlPanel, "Birthday", 0);
+
+ assert.notOk("timeRanges" in controlPanel.getQuery());
+
+ controlPanel.destroy();
+ });
+ });
+});