From 3751379f1e9a4c215fb6eb898b4ccc67659b9ace Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Tue, 10 May 2022 21:51:50 +0700 Subject: initial commit 2 --- .../tests/control_panel/comparison_menu_tests.js | 145 +++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 addons/web/static/tests/control_panel/comparison_menu_tests.js (limited to 'addons/web/static/tests/control_panel/comparison_menu_tests.js') 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: ` + + + + `, + 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(); + }); + }); +}); -- cgit v1.2.3