summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/views/pivot_tests.js
diff options
context:
space:
mode:
authorRobot Odoo <xmo+roboto@odoo.com>2018-11-19 15:38:25 +0100
committerGitHub <noreply@github.com>2018-11-19 15:38:25 +0100
commit7c3d5dc067c7c331dcc0b52bafbdfd067087a3c4 (patch)
tree6058f8a893815bf0ed2495649c125523f4def762 /addons/web/static/tests/views/pivot_tests.js
parent8fc246da31aa2a1c770732ae97e0cb4e840f07cf (diff)
parentabf32b8b21394491040e5c11c1fea809c1d7c62c (diff)
[MERGE][REF] *: update js test suite to use helpers
This rev. introduces robust helpers to use in the JS tests suite to interact with DOM and components, and starts using them (almost) everywhere. All the helpers are exposed though testUtils.js. There are 2 kinds of helpers: 1. Assertions ------------- * assert.containsNone, containsN, containsOnce check that the DOM (or a specific part of the DOM) contains a `selector`. It generates a correct error message automatically. ex: assert.notOk(form.$('button').hasClass('btn-primary')); -> assert.doesNotHaveClass(form.$('button'), 'btn-primary'); * assert.isVisible, isNotVisible check that the DOM has an element visible or not. They also check that the element is actually in the DOM (before most tests didn't verify this). * assert.hasClass, doesNotHaveClass, hasAttrVAlue, check specific properties of a DOM element, and also validate that it is applied on a single existing DOM element (before most tests didn't verify this). 2. Utilities ------------ The goal of the utilities is to centralize the definition of many standard components and interactions, ensuring that when we refactor the JS framework, we do not need to change all the tests. Existing mock utilities (addMockEnvironment, intercept, path, patchDate, unpatch and fieldsViewGet) are moved to 'testUtils.mock.*'. Existing DOM utilities are moved to 'testUtils.dom.*'. New dom utilities are created for opendDatePicker, click, clickFirst and clickLast. Helper `click` verifies that there is exactly 1 element visible in the DOM you click on, `clickFirst` and `clickLast` verify that there are more than one element on the DOM. ex: form.$('button').click(); -> testUtils.dom.click(form.$('button')); New Form utilities: (testUtils.form.*) clickEdit, clickSave, clickCreate, clickDiscard, all clicks on the control panel buttons of the form. `reload` reloads the form data. New modal, graph, kanban and pivot utils (testUtils.pivot.*, testUtils.kanban.*, etc.). New fields utils: (testUtils.fields.*) * editInput, editSelect: allow to change the value of a field, using a selector to identify it. They validate that the input exists and trigger the change event automatically. * editAndTrigger: allow to modify a field and trigger specific events after the value change * many2one (testUtils.fields.many2one.*) clickOpenDropdown, clickHighlightedItem, clickItem, searchAndClickItem: use a field name instead of a selector and do all the complex mechanism to open, filter and highlight many2one fields. Joint work with aab, dam, ged, mge, svs and vsc. closes odoo/odoo#28784
Diffstat (limited to 'addons/web/static/tests/views/pivot_tests.js')
-rw-r--r--addons/web/static/tests/views/pivot_tests.js263
1 files changed, 134 insertions, 129 deletions
diff --git a/addons/web/static/tests/views/pivot_tests.js b/addons/web/static/tests/views/pivot_tests.js
index 858edcd55e4..29bbf1ec4b4 100644
--- a/addons/web/static/tests/views/pivot_tests.js
+++ b/addons/web/static/tests/views/pivot_tests.js
@@ -6,7 +6,7 @@ var PivotView = require('web.PivotView');
var testUtils = require('web.test_utils');
var createActionManager = testUtils.createActionManager;
-var patchDate = testUtils.patchDate;
+var patchDate = testUtils.mock.patchDate;
var _t = core._t;
var createView = testUtils.createView;
@@ -106,7 +106,7 @@ QUnit.module('Views', {
},
});
- assert.ok(pivot.$el.hasClass('o_enable_linking'),
+ assert.hasClass(pivot.$el,'o_enable_linking',
"root node should have classname 'o_enable_linking'");
assert.strictEqual(pivot.$('td.o_pivot_cell_value:contains(32)').length, 1,
"should contain a pivot cell with the sum of all records");
@@ -206,9 +206,9 @@ QUnit.module('Views', {
}
});
- assert.ok(pivot.$el.hasClass('o_enable_linking'),
+ assert.hasClass(pivot.$el,'o_enable_linking',
"root node should have classname 'o_enable_linking'");
- pivot.$('.o_pivot_cell_value:contains(12)').click(); // should trigger a do_action
+ testUtils.dom.click(pivot.$('.o_pivot_cell_value:contains(12)')); // should trigger a do_action
pivot.destroy();
});
@@ -230,11 +230,11 @@ QUnit.module('Views', {
},
});
- assert.notOk(pivot.$el.hasClass('o_enable_linking'),
+ assert.doesNotHaveClass(pivot.$el, 'o_enable_linking',
"root node should not have classname 'o_enable_linking'");
- assert.strictEqual(pivot.$('.o_pivot_cell_value').length, 1,
+ assert.containsOnce(pivot, '.o_pivot_cell_value',
"should have one cell");
- pivot.$('.o_pivot_cell_value').click(); // should not trigger a do_action
+ testUtils.dom.click(pivot.$('.o_pivot_cell_value')); // should not trigger a do_action
pivot.destroy();
});
@@ -280,7 +280,7 @@ QUnit.module('Views', {
});
var $countMeasure = pivot.$buttons.find('.dropdown-item[data-field=__count]:first');
- assert.ok($countMeasure.hasClass('selected'), "The count measure should be activated");
+ assert.hasClass($countMeasure,'selected', "The count measure should be activated");
pivot.destroy();
});
@@ -305,7 +305,7 @@ QUnit.module('Views', {
"should contain a pivot cell with the number of all records");
assert.strictEqual(readGroupCount, 1, "should have done 1 rpc");
- pivot.update({domain: [['foo', '>', 10]]});
+ testUtils.pivot.reload(pivot, {domain: [['foo', '>', 10]]});
assert.strictEqual(pivot.$('td.o_pivot_cell_value:contains(2)').length, 1,
"should contain a pivot cell with the number of remaining records");
assert.strictEqual(readGroupCount, 2, "should have done 2 rpcs");
@@ -325,7 +325,7 @@ QUnit.module('Views', {
'</pivot>',
});
- assert.strictEqual(pivot.$('.o_pivot_header_cell_opened').length, 1,
+ assert.containsOnce(pivot, '.o_pivot_header_cell_opened',
"should have one opened header");
assert.strictEqual(pivot.$('.o_pivot_header_cell_closed:contains(xphone)').length, 1,
"should display one header with 'xphone'");
@@ -353,28 +353,28 @@ QUnit.module('Views', {
},
});
- assert.strictEqual(pivot.$('tbody tr').length, 3,
+ assert.containsN(pivot, 'tbody tr', 3,
"should have 3 rows: 1 for the opened header, and 2 for data");
// click on the opened header to close it
- pivot.$('.o_pivot_header_cell_opened').click();
+ testUtils.dom.click(pivot.$('.o_pivot_header_cell_opened'));
- assert.strictEqual(pivot.$('tbody tr').length, 1, "should have 1 row");
+ assert.containsOnce(pivot, 'tbody tr', "should have 1 row");
// click on closed header to open dropdown
- pivot.$('tbody .o_pivot_header_cell_closed').click();
+ testUtils.dom.click(pivot.$('tbody .o_pivot_header_cell_closed'));
- assert.strictEqual(pivot.$('.o_pivot_field_menu .dropdown-item[data-field="date"]:first').length, 1,
+ assert.containsOnce(pivot, '.o_pivot_field_menu .dropdown-item[data-field="date"]:first',
"should have the date field as proposition");
- assert.strictEqual(pivot.$('.o_field_selection .dropdown-item[data-field="product_id"]:first').length, 1,
+ assert.containsOnce(pivot, '.o_field_selection .dropdown-item[data-field="product_id"]:first',
"should have the product_id field as proposition");
- assert.strictEqual(pivot.$('.o_field_selection .dropdown-item[data-field="non_stored_m2o"]:first').length, 0,
+ assert.containsNone(pivot, '.o_field_selection .dropdown-item[data-field="non_stored_m2o"]:first',
"should not have the non_stored_m2o field as proposition");
- pivot.$('.o_pivot_field_menu .dropdown-item[data-field="date"]:first').click();
+ testUtils.dom.click(pivot.$('.o_pivot_field_menu .dropdown-item[data-field="date"]:first'));
- assert.strictEqual(pivot.$('tbody tr').length, 4,
+ assert.containsN(pivot, 'tbody tr', 4,
"should have 4 rows: one for header, 3 for data");
assert.strictEqual(rpcCount, 3,
"should have done 3 rpcs (initial load) + open header with different groupbys");
@@ -395,14 +395,15 @@ QUnit.module('Views', {
});
// open dropdown to zoom into first row
- pivot.$('tbody .o_pivot_header_cell_closed').first().click();
+ testUtils.dom.clickFirst(pivot.$('tbody .o_pivot_header_cell_closed'));
// click on date by day
- pivot.$('.o_pivot_field_menu .dropdown-item[data-field="date"][data-interval="day"]').click();
+ pivot.$('.dropdown-menu.show .o_inline_dropdown .dropdown-menu').toggle(); // unfold inline dropdown
+ testUtils.dom.click(pivot.$('.o_pivot_field_menu .dropdown-item[data-field="date"][data-interval="day"]'));
// open dropdown to zoom into second row
- pivot.$('tbody td.o_pivot_header_cell_closed:eq(1)').first().click();
+ testUtils.dom.clickLast(pivot.$('tbody td.o_pivot_header_cell_closed'));
- assert.strictEqual(pivot.$('tbody tr').length, 7,
+ assert.containsN(pivot, 'tbody tr', 7,
"should have 7 rows (1 for total, 1 for xphone, 1 for xpad, 4 for data)");
pivot.destroy();
});
@@ -425,14 +426,14 @@ QUnit.module('Views', {
},
});
- assert.strictEqual(pivot.$('tbody tr').length, 3,
+ assert.containsN(pivot, 'tbody tr', 3,
"should have 3 rows: 1 for the open header, and 2 for data");
rpcCount = 0;
- pivot.$buttons.find('.o_pivot_flip_button').click();
+ testUtils.dom.click(pivot.$buttons.find('.o_pivot_flip_button'));
assert.strictEqual(rpcCount, 0, "should not have done any rpc");
- assert.strictEqual(pivot.$('tbody tr').length, 1,
+ assert.containsOnce(pivot, 'tbody tr',
"should have 1 rows: 1 for the main header");
pivot.destroy();
});
@@ -456,29 +457,31 @@ QUnit.module('Views', {
},
});
- assert.strictEqual(pivot.$('.o_pivot_cell_value').length, 3,
+ assert.containsN(pivot, '.o_pivot_cell_value', 3,
"should have 3 cells: 1 for the open header, and 2 for data");
- assert.ok(!pivot.$buttons.find('.dropdown-item[data-field=__count]:first').hasClass('selected'),
+ assert.doesNotHaveClass(pivot.$buttons.find('.dropdown-item[data-field=__count]:first'), 'selected',
"the __count measure should not be selected");
rpcCount = 0;
- pivot.$buttons.find('.dropdown-item[data-field=__count]:first').click();
+ testUtils.pivot.toggleMeasuresDropdown(pivot);
+ testUtils.pivot.clickMeasure(pivot, '__count');
- assert.ok(pivot.$buttons.find('.dropdown-item[data-field=__count]:first').hasClass('selected'),
+ assert.hasClass(pivot.$buttons.find('.dropdown-item[data-field=__count]:first'),'selected',
"the __count measure should be selected");
- assert.strictEqual(pivot.$('.o_pivot_cell_value').length, 6,
+ assert.containsN(pivot, '.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");
- pivot.$buttons.find('.dropdown-item[data-field=__count]:first').click();
+ testUtils.pivot.clickMeasure(pivot, '__count');
- assert.ok(!pivot.$buttons.find('.dropdown-item[data-field=__count]:first').hasClass('selected'),
+ assert.doesNotHaveClass(pivot.$buttons.find('.dropdown-item[data-field=__count]:first'), 'selected',
"the __count measure should not be selected");
- assert.strictEqual(pivot.$('.o_pivot_cell_value').length, 3,
+ assert.containsN(pivot, '.o_pivot_cell_value', 3,
"should have 3 cells: 1 for the open header, and 2 for data");
assert.strictEqual(rpcCount, 2,
"should not have done any extra rpcs");
+
pivot.destroy();
});
@@ -493,16 +496,17 @@ QUnit.module('Views', {
'</pivot>',
});
- assert.strictEqual(pivot.$('.o_view_nocontent').length, 0,
+ assert.containsNone(pivot, '.o_view_nocontent',
"should not have a no_content_helper");
- assert.strictEqual(pivot.$('table').length, 1,
+ assert.containsOnce(pivot, 'table',
"should have a table in DOM");
- pivot.$buttons.find('.dropdown-item[data-field=__count]:first').click();
+ testUtils.pivot.toggleMeasuresDropdown(pivot);
+ testUtils.pivot.clickMeasure(pivot, '__count');
- assert.strictEqual(pivot.$('.o_view_nocontent').length, 1,
+ assert.containsOnce(pivot, '.o_view_nocontent',
"should have a no_content_helper");
- assert.strictEqual(pivot.$('table').length, 0,
+ assert.containsNone(pivot, 'table',
"should not have a table in DOM");
pivot.destroy();
});
@@ -518,16 +522,16 @@ QUnit.module('Views', {
'</pivot>',
});
- assert.strictEqual(pivot.$('.o_view_nocontent').length, 0,
+ assert.containsNone(pivot, '.o_view_nocontent',
"should not have a no_content_helper");
- assert.strictEqual(pivot.$('table').length, 1,
+ assert.containsOnce(pivot, 'table',
"should have a table in DOM");
- pivot.update({domain: [['foo', '=', 12345]]});
+ testUtils.pivot.reload(pivot, {domain: [['foo', '=', 12345]]});
- assert.strictEqual(pivot.$('.o_view_nocontent').length, 1,
+ assert.containsOnce(pivot, '.o_view_nocontent',
"should have a no_content_helper");
- assert.strictEqual(pivot.$('table').length, 0,
+ assert.containsNone(pivot, 'table',
"should not have a table in DOM");
pivot.destroy();
});
@@ -544,7 +548,7 @@ QUnit.module('Views', {
arch: '<pivot string="Partners"></pivot>',
});
- assert.strictEqual(pivot.$('.o_view_nocontent').length, 1,
+ assert.containsOnce(pivot, '.o_view_nocontent',
"should have a no_content_helper");
pivot.destroy();
});
@@ -562,19 +566,19 @@ QUnit.module('Views', {
},
});
- assert.strictEqual(pivot.$('.o_view_nocontent').length, 1,
+ assert.containsOnce(pivot, '.o_view_nocontent',
"should have a no_content_helper");
- pivot.update({domain: [['foo', '=', 12345]]});
- assert.strictEqual(pivot.$('.o_view_nocontent').length, 1,
+ testUtils.pivot.reload(pivot, {domain: [['foo', '=', 12345]]});
+ assert.containsOnce(pivot, '.o_view_nocontent',
"should still have a no_content_helper");
- pivot.update({domain: []});
- assert.strictEqual(pivot.$('.o_view_nocontent').length, 0,
+ testUtils.pivot.reload(pivot, {domain: []});
+ assert.containsNone(pivot, '.o_view_nocontent',
"should not have a no_content_helper");
// tries to open a field selection menu, to make sure it was not
// removed from the dom.
- pivot.$('.o_pivot_header_cell_closed').first().click();
- assert.strictEqual(pivot.$('.o_pivot_field_menu').length, 1,
+ testUtils.dom.clickFirst(pivot.$('.o_pivot_header_cell_closed'));
+ assert.containsOnce(pivot, '.o_pivot_field_menu',
"the field selector menu exists");
pivot.destroy();
});
@@ -598,18 +602,18 @@ QUnit.module('Views', {
},
});
- assert.strictEqual(pivot.$('.o_pivot_cell_value').length, 3,
+ assert.containsN(pivot, '.o_pivot_cell_value', 3,
"should have 3 cells: 1 for the open header, and 2 for data");
assert.strictEqual(pivot.$('.o_pivot_measure_row:contains(Foo)').length, 1,
"should have 1 row for measure Foo");
- pivot.update({domain: [['foo', '=', 12345]]});
+ testUtils.pivot.reload(pivot, {domain: [['foo', '=', 12345]]});
rpcCount = 0;
- pivot.update({domain: []});
+ testUtils.pivot.reload(pivot, {domain: []});
assert.equal(rpcCount, 2, "should have reloaded data");
- assert.strictEqual(pivot.$('.o_pivot_cell_value').length, 3,
+ assert.containsN(pivot, '.o_pivot_cell_value', 3,
"should still have 3 cells: 1 for the open header, and 2 for data");
assert.strictEqual(pivot.$('.o_pivot_measure_row:contains(Foo)').length, 1,
"should still have 1 row for measure Foo");
@@ -628,16 +632,16 @@ QUnit.module('Views', {
'</pivot>',
});
- assert.strictEqual(pivot.$('.o_pivot_cell_value').length, 1,
+ assert.containsOnce(pivot, '.o_pivot_cell_value',
"should have only 1 cell");
- assert.strictEqual(pivot.$('tbody tr').length, 1,
+ assert.containsOnce(pivot, 'tbody tr',
"should have 1 rows");
- pivot.update({groupBy: ['product_id']});
+ testUtils.pivot.reload(pivot, {groupBy: ['product_id']});
- assert.strictEqual(pivot.$('.o_pivot_cell_value').length, 3,
+ assert.containsN(pivot, '.o_pivot_cell_value', 3,
"should have 3 cells");
- assert.strictEqual(pivot.$('tbody tr').length, 3,
+ assert.containsN(pivot, 'tbody tr', 3,
"should have 3 rows");
pivot.destroy();
});
@@ -658,12 +662,12 @@ QUnit.module('Views', {
assert.strictEqual($('td.o_pivot_cell_value').text(), "321220",
"should have proper values in cells (total, result 1, result 2");
- pivot.$('th.o_pivot_measure_row').click();
+ testUtils.dom.click(pivot.$('th.o_pivot_measure_row'));
assert.strictEqual($('td.o_pivot_cell_value').text(), "322012",
"should have proper values in cells (total, result 2, result 1");
- pivot.$('th.o_pivot_measure_row').click();
+ testUtils.dom.click(pivot.$('th.o_pivot_measure_row'));
assert.strictEqual($('td.o_pivot_cell_value').text(), "321220",
"should have proper values in cells (total, result 1, result 2");
@@ -697,25 +701,25 @@ QUnit.module('Views', {
// expand on date:days, product
nbReadGroups = 0;
- pivot.update({groupBy: ['date:days', 'product_id']});
+ testUtils.pivot.reload(pivot, {groupBy: ['date:days', 'product_id']});
assert.strictEqual(nbReadGroups, 3, "should have done 3 read_group RPCS");
- assert.strictEqual(pivot.$('tbody tr').length, 8,
+ assert.containsN(pivot, 'tbody tr', 8,
"should have 7 rows (total + 3 for December and 2 for October and April)");
// collapse the last two rows
- pivot.$('.o_pivot_header_cell_opened').last().click();
- pivot.$('.o_pivot_header_cell_opened').last().click();
+ testUtils.dom.clickLast(pivot.$('.o_pivot_header_cell_opened'));
+ testUtils.dom.clickLast(pivot.$('.o_pivot_header_cell_opened'));
- assert.strictEqual(pivot.$('tbody tr').length, 6,
+ assert.containsN(pivot, 'tbody tr', 6,
"should have 6 rows now");
// expand all
nbReadGroups = 0;
- pivot.$buttons.find('.o_pivot_expand_button').click();
+ testUtils.dom.click(pivot.$buttons.find('.o_pivot_expand_button'));
assert.strictEqual(nbReadGroups, 3, "should have done 3 read_group RPCS");
- assert.strictEqual(pivot.$('tbody tr').length, 8,
+ assert.containsN(pivot, 'tbody tr', 8,
"should have 8 rows again");
pivot.destroy();
@@ -743,24 +747,24 @@ QUnit.module('Views', {
});
// expand on date:days, product
- pivot.update({groupBy: ['date:days', 'product_id']});
+ testUtils.pivot.reload(pivot, {groupBy: ['date:days', 'product_id']});
- assert.strictEqual(pivot.$('tbody tr').length, 8,
+ assert.containsN(pivot, 'tbody tr', 8,
"should have 7 rows (total + 3 for December and 2 for October and April)");
// collapse the last two rows
- pivot.$('.o_pivot_header_cell_opened').last().click();
- pivot.$('.o_pivot_header_cell_opened').last().click();
+ testUtils.dom.clickLast(pivot.$('.o_pivot_header_cell_opened'));
+ testUtils.dom.clickLast(pivot.$('.o_pivot_header_cell_opened'));
- assert.strictEqual(pivot.$('tbody tr').length, 6,
+ assert.containsN(pivot, 'tbody tr', 6,
"should have 6 rows now");
// expand all
def = $.Deferred();
- pivot.$buttons.find('.o_pivot_expand_button').click();
+ testUtils.dom.click(pivot.$buttons.find('.o_pivot_expand_button'));
def.resolve();
- assert.strictEqual(pivot.$('tbody tr').length, 8,
+ assert.containsN(pivot, 'tbody tr', 8,
"should have 8 rows again");
pivot.destroy();
@@ -786,7 +790,7 @@ QUnit.module('Views', {
},
});
- pivot.$buttons.find('.o_pivot_download').click();
+ testUtils.dom.click(pivot.$buttons.find('.o_pivot_download'));
pivot.destroy();
});
@@ -805,7 +809,7 @@ QUnit.module('Views', {
'</pivot>',
});
- assert.strictEqual(pivot.$buttons.find('.o_pivot_download').attr('disabled'), 'disabled',
+ assert.hasAttrValue(pivot.$buttons.find('.o_pivot_download'), 'disabled', 'disabled',
"download button should be disabled");
pivot.destroy();
});
@@ -830,8 +834,8 @@ QUnit.module('Views', {
}, "context should be correct");
// expand header on field customer
- pivot.$('thead .o_pivot_header_cell_closed:nth(1)').click();
- pivot.$('.o_pivot_field_menu .dropdown-item[data-field="customer"]:first').click();
+ testUtils.dom.click(pivot.$('thead .o_pivot_header_cell_closed:nth(1)'));
+ testUtils.dom.click(pivot.$('.o_pivot_field_menu .dropdown-item[data-field="customer"]:first'));
assert.deepEqual(pivot.getContext(), {
pivot_column_groupby: ['date:day', 'customer'],
pivot_measures: ['foo'],
@@ -839,8 +843,8 @@ QUnit.module('Views', {
}, "context should be correct");
// expand row on field product_id
- pivot.$('tbody .o_pivot_header_cell_closed').first().click();
- pivot.$('.o_pivot_field_menu .dropdown-item[data-field="product_id"]:first').click();
+ testUtils.dom.click(pivot.$('tbody .o_pivot_header_cell_closed'));
+ testUtils.dom.click(pivot.$('.o_pivot_field_menu .dropdown-item[data-field="product_id"]:first'));
assert.deepEqual(pivot.getContext(), {
pivot_column_groupby: ['date:day', 'customer'],
pivot_measures: ['foo'],
@@ -872,14 +876,14 @@ QUnit.module('Views', {
},
});
- assert.strictEqual(pivot.$('thead .o_pivot_header_cell_opened').length, 1,
+ assert.containsOnce(pivot, 'thead .o_pivot_header_cell_opened',
"column: should have one opened header");
assert.strictEqual(pivot.$('thead .o_pivot_header_cell_closed:contains(First)').length, 1,
"column: should display one closed header with 'First'");
assert.strictEqual(pivot.$('thead .o_pivot_header_cell_closed:contains(Second)').length, 1,
"column: should display one closed header with 'Second'");
- assert.strictEqual(pivot.$('tbody .o_pivot_header_cell_opened').length, 1,
+ assert.containsOnce(pivot, 'tbody .o_pivot_header_cell_opened',
"row: should have one opened header");
assert.strictEqual(pivot.$('tbody .o_pivot_header_cell_closed:contains(xphone)').length, 1,
"row: should display one closed header with 'xphone'");
@@ -917,16 +921,16 @@ QUnit.module('Views', {
pivot_row_groupby: ['product_id'],
},
};
- pivot.reload(reloadParams);
+ testUtils.pivot.reload(pivot, reloadParams);
- assert.strictEqual(pivot.$('thead .o_pivot_header_cell_opened').length, 1,
+ assert.containsOnce(pivot, 'thead .o_pivot_header_cell_opened',
"column: should have one opened header");
assert.strictEqual(pivot.$('thead .o_pivot_header_cell_closed:contains(First)').length, 1,
"column: should display one closed header with 'First'");
assert.strictEqual(pivot.$('thead .o_pivot_header_cell_closed:contains(Second)').length, 1,
"column: should display one closed header with 'Second'");
- assert.strictEqual(pivot.$('tbody .o_pivot_header_cell_opened').length, 1,
+ assert.containsOnce(pivot, 'tbody .o_pivot_header_cell_opened',
"row: should have one opened header");
assert.strictEqual(pivot.$('tbody .o_pivot_header_cell_closed:contains(xphone)').length, 1,
"row: should display one closed header with 'xphone'");
@@ -953,14 +957,14 @@ QUnit.module('Views', {
groupBy: ['product_id'],
});
- assert.strictEqual(pivot.$('thead .o_pivot_header_cell_opened').length, 1,
+ assert.containsOnce(pivot, 'thead .o_pivot_header_cell_opened',
'column: should have one opened header');
assert.strictEqual(pivot.$('thead .o_pivot_header_cell_closed:contains(First)').length, 1,
'column: should display one closed header with "First"');
assert.strictEqual(pivot.$('thead .o_pivot_header_cell_closed:contains(Second)').length, 1,
'column: should display one closed header with "Second"');
- assert.strictEqual(pivot.$('tbody .o_pivot_header_cell_opened').length, 1,
+ assert.containsOnce(pivot, 'tbody .o_pivot_header_cell_opened',
'row: should have one opened header');
assert.strictEqual(pivot.$('tbody .o_pivot_header_cell_closed:contains(xphone)').length, 1,
'row: should display one closed header with "xphone"');
@@ -998,7 +1002,7 @@ QUnit.module('Views', {
});
var $countMeasure = pivot.$buttons.find('.dropdown-item[data-field=__count]:first');
- assert.ok($countMeasure.hasClass('selected'), "The count measure should be activated");
+ assert.hasClass($countMeasure,'selected', "The count measure should be activated");
pivot.destroy();
});
@@ -1069,9 +1073,10 @@ QUnit.module('Views', {
'<field name="product_id" type="measure"/>' +
'</pivot>',
});
- pivot.$('tbody .o_pivot_header_cell_closed').first().click();
+ testUtils.dom.click(pivot.$('tbody .o_pivot_header_cell_closed'));
// click on date by month
- pivot.$('.o_pivot_field_menu .dropdown-item[data-field="date"][data-interval="month"]').click();
+ pivot.$('.dropdown-menu.show .o_inline_dropdown .dropdown-menu').toggle(); // unfold inline dropdown
+ testUtils.dom.click(pivot.$('.o_pivot_field_menu .dropdown-item[data-field="date"][data-interval="month"]'));
assert.strictEqual(pivot.$('.o_pivot_cell_value').text(), '2211',
'should have loaded the proper data');
@@ -1093,7 +1098,8 @@ QUnit.module('Views', {
},
});
- pivot.$buttons.find('.dropdown-item[data-field=product_id]:first').click();
+ testUtils.pivot.toggleMeasuresDropdown(pivot);
+ testUtils.pivot.clickMeasure(pivot, 'product_id');
assert.strictEqual(pivot.$('.o_pivot_cell_value').text(), '421131',
'should have loaded the proper data');
pivot.destroy();
@@ -1111,9 +1117,9 @@ QUnit.module('Views', {
'</pivot>',
});
- pivot.$('tbody .o_pivot_header_cell_closed').first().click();
+ testUtils.dom.click(pivot.$('tbody .o_pivot_header_cell_closed'));
- pivot.$('.o_pivot_field_menu .dropdown-item[data-field="product_id"]:first').click();
+ testUtils.dom.click(pivot.$('.o_pivot_field_menu .dropdown-item[data-field="product_id"]:first'));
assert.strictEqual(pivot.$('.o_pivot_cell_value').text(), '211',
'should have loaded the proper data');
@@ -1133,15 +1139,15 @@ QUnit.module('Views', {
});
// Set a column groupby
- pivot.$('thead .o_pivot_header_cell_closed').click();
- pivot.$('.o_field_selection .dropdown-item[data-field=customer]:first').click();
+ testUtils.dom.click(pivot.$('thead .o_pivot_header_cell_closed'));
+ testUtils.dom.click(pivot.$('.o_field_selection .dropdown-item[data-field=customer]:first'));
// Set a Row groupby
- pivot.$('tbody .o_pivot_header_cell_closed').click();
- pivot.$('.o_pivot_field_menu .dropdown-item[data-field=product_id]:first').click();
+ testUtils.dom.click(pivot.$('tbody .o_pivot_header_cell_closed'));
+ testUtils.dom.click(pivot.$('.o_pivot_field_menu .dropdown-item[data-field=product_id]:first'));
// Set a domain
- pivot.update({domain: [['product_id', '=', 41]]});
+ testUtils.pivot.reload(pivot, {domain: [['product_id', '=', 41]]});
var expectedContext = {pivot_column_groupby: ['customer'],
pivot_measures: ['foo'],
@@ -1183,13 +1189,13 @@ QUnit.module('Views', {
});
def = $.Deferred();
- pivot.update({groupBy: ['product_id']});
- pivot.update({groupBy: ['product_id', 'customer']});
+ testUtils.pivot.reload(pivot, {groupBy: ['product_id']});
+ testUtils.pivot.reload(pivot, {groupBy: ['product_id', 'customer']});
def.resolve();
- assert.strictEqual(pivot.$('.o_pivot_cell_value').length, 6,
+ assert.containsN(pivot, '.o_pivot_cell_value', 6,
"should have 6 cells");
- assert.strictEqual(pivot.$('tbody tr').length, 6,
+ assert.containsN(pivot, 'tbody tr', 6,
"should have 6 rows");
pivot.destroy();
});
@@ -1235,7 +1241,7 @@ QUnit.module('Views', {
'</pivot>',
});
- assert.ok(pivot.$('thead tr:last th:last').hasClass('o_pivot_measure_row_sorted_asc'),
+ assert.hasClass(pivot.$('thead tr:last th:last'),'o_pivot_measure_row_sorted_asc',
"Last thead should be sorted in ascending order");
pivot.destroy();
@@ -1295,17 +1301,17 @@ QUnit.module('Views', {
// with no data
- $('.o_time_range_menu_button').click();
- $('.o_time_range_menu .o_comparison_checkbox').click();
+ testUtils.dom.click($('.o_time_range_menu_button'));
+ testUtils.dom.click($('.o_time_range_menu .o_comparison_checkbox'));
$('.o_time_range_selector').val('today');
- $('.o_time_range_menu .o_apply_range').click();
+ testUtils.dom.click($('.o_time_range_menu .o_apply_range'));
assert.strictEqual($('.o_pivot p.o_view_nocontent_empty_folder').length, 1);
// with data, no row groupby
- $('.o_time_range_menu_button').click();
+ testUtils.dom.click($('.o_time_range_menu_button'));
$('.o_time_range_selector').val('this_month');
- $('.o_time_range_menu .o_apply_range').click();
+ testUtils.dom.click($('.o_time_range_menu .o_apply_range'));
results = [
"13", "0", "100%", "0", "19", "-100%", "13", "19", "-31.58%"
];
@@ -1313,8 +1319,8 @@ QUnit.module('Views', {
// with data, with row groupby
- $('.o_pivot .o_pivot_header_cell_closed').eq(2).click();
- $('.o_pivot .o_field_selection a[data-field="product_id"]').click();
+ testUtils.dom.click($('.o_pivot .o_pivot_header_cell_closed').eq(2));
+ testUtils.dom.click($('.o_pivot .o_field_selection a[data-field="product_id"]'));
results = [
"13", "0", "100%", "0", "19", "-100%", "13", "19", "-31.58%" ,
"12", "0", "100%", "12", "0" , "100%" ,
@@ -1322,9 +1328,9 @@ QUnit.module('Views', {
];
checkCellValues(results);
- $('.o_control_panel button.btn-primary').eq(0).click();
- $('.o_control_panel div.o_pivot_measures_list a[data-field="foo"').click();
- $('.o_control_panel div.o_pivot_measures_list a[data-field="product_id"').click();
+ testUtils.pivot.toggleMeasuresDropdown(actionManager.getCurrentController().widget);
+ testUtils.dom.click($('.o_control_panel div.o_pivot_measures_list a[data-field="foo"]'));
+ testUtils.dom.click($('.o_control_panel div.o_pivot_measures_list a[data-field="product_id"]'));
results = [
"2", "0", "100%", "0", "1", "-100%", "2", "1", "100%" ,
"1", "0", "100%", "1", "0" , "100%" ,
@@ -1332,9 +1338,8 @@ QUnit.module('Views', {
];
checkCellValues(results);
- $('.o_control_panel button.btn-primary').eq(0).click();
- $('.o_control_panel div.o_pivot_measures_list a[data-field="__count"').click();
- $('.o_control_panel div.o_pivot_measures_list a[data-field="product_id"').click();
+ testUtils.dom.click($('.o_control_panel div.o_pivot_measures_list a[data-field="__count"]'));
+ testUtils.dom.click($('.o_control_panel div.o_pivot_measures_list a[data-field="product_id"]'));
results = [
"2", "0", "100%", "0", "2", "-100%", "2", "2", "0%" ,
"1", "0", "100%", "1", "0" , "100%" ,
@@ -1342,7 +1347,7 @@ QUnit.module('Views', {
];
checkCellValues(results);
- $('.o_pivot .o_pivot_header_cell_opened').eq(0).click();
+ testUtils.dom.clickFirst($('.o_pivot .o_pivot_header_cell_opened'));
results = [
"2", "2", "0%" ,
"1", "0", "100%" ,
@@ -1397,13 +1402,13 @@ QUnit.module('Views', {
});
// open time range menu
- $('.o_control_panel .o_time_range_menu_button').click();
+ testUtils.dom.click($('.o_control_panel .o_time_range_menu_button'));
// select 'Today' as range
$('.o_control_panel .o_time_range_selector').val('today');
// check checkbox 'Compare To'
- $('.o_control_panel .o_time_range_menu .o_comparison_checkbox').click();
+ testUtils.dom.click($('.o_control_panel .o_time_range_menu .o_comparison_checkbox'));
// Click on 'Apply' button
- $('.o_control_panel .o_time_range_menu .o_apply_range').click();
+ testUtils.dom.click($('.o_control_panel .o_time_range_menu .o_apply_range'));
// the time range menu configuration is by now: Date, Today, checkbox checked, Previous Period
// With the data above, the time ranges contain no record.
@@ -1413,16 +1418,16 @@ QUnit.module('Views', {
assert.ok($('.o_control_panel button.o_pivot_download').prop('disabled'));
// open time range menu
- $('.o_control_panel .o_time_range_menu_button').click();
+ testUtils.dom.click($('.o_control_panel .o_time_range_menu_button'));
// select 'This Month' as date range
$('.o_control_panel .o_time_range_selector').val('this_month');
// Click on 'Apply' button
- $('.o_control_panel .o_time_range_menu .o_apply_range').click();
+ testUtils.dom.click($('.o_control_panel .o_time_range_menu .o_apply_range'));
// the time range menu configuration is by now: Date, This Month, checkbox checked, Previous Period
// With the data above, the time ranges contain some records.
// export data. Should execute 'get_file'
- $('.o_control_panel button.o_pivot_download').click();
+ testUtils.dom.click($('.o_control_panel button.o_pivot_download'));
assert.verifySteps([
// Headers
@@ -1490,10 +1495,10 @@ QUnit.module('Views', {
mockMock = true;
// activate 'This Month' and 'Previous Period' in time range menu
- $('.o_control_panel .o_time_range_menu_button').click();
+ testUtils.dom.click($('.o_control_panel .o_time_range_menu_button'));
$('.o_control_panel .o_time_range_selector').val('this_month');
- $('.o_control_panel .o_time_range_menu .o_comparison_checkbox').click();
- $('.o_control_panel .o_time_range_menu .o_apply_range').click();
+ testUtils.dom.click($('.o_control_panel .o_time_range_menu .o_comparison_checkbox'));
+ testUtils.dom.click($('.o_control_panel .o_time_range_menu .o_apply_range'));
var results = [
"4", "0", "100%",