diff options
| author | Christophe Simonis <chs@odoo.com> | 2019-07-26 11:32:43 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2019-07-26 11:32:43 +0200 |
| commit | e0f9c092ccefc0516d06a9dc7f66e650eee888cf (patch) | |
| tree | 0c404769dc28af133425cf9756a83569c70b31f3 /addons/web | |
| parent | 7d78795f8b34bc6a8afde18427a1c26901824db3 (diff) | |
| parent | 1d6d790513e3f1177dc0059f2ba4a06de6d87ac2 (diff) | |
[MERGE] forward port branch saas-12.2 up to 1d6d790513e
Diffstat (limited to 'addons/web')
| -rw-r--r-- | addons/web/static/src/js/views/pivot/pivot_model.js | 1 | ||||
| -rw-r--r-- | addons/web/static/src/scss/layout_standard.scss | 3 | ||||
| -rw-r--r-- | addons/web/static/tests/views/pivot_tests.js | 68 |
3 files changed, 71 insertions, 1 deletions
diff --git a/addons/web/static/src/js/views/pivot/pivot_model.js b/addons/web/static/src/js/views/pivot/pivot_model.js index 04f818d825d..ea657cbe2a6 100644 --- a/addons/web/static/src/js/views/pivot/pivot_model.js +++ b/addons/web/static/src/js/views/pivot/pivot_model.js @@ -430,6 +430,7 @@ var PivotModel = AbstractModel.extend({ } if ('domain' in params) { this.data.domain = params.domain; + this.initialDomain = params.domain; } else { this.data.domain = this.initialDomain; } diff --git a/addons/web/static/src/scss/layout_standard.scss b/addons/web/static/src/scss/layout_standard.scss index acc0e07bf1c..bd0b4934259 100644 --- a/addons/web/static/src/scss/layout_standard.scss +++ b/addons/web/static/src/scss/layout_standard.scss @@ -1,3 +1,6 @@ .o_standard_footer { margin-top: 200px; + .list-inline-item { + white-space: nowrap; + } } diff --git a/addons/web/static/tests/views/pivot_tests.js b/addons/web/static/tests/views/pivot_tests.js index fa171f21015..8aeb3a29157 100644 --- a/addons/web/static/tests/views/pivot_tests.js +++ b/addons/web/static/tests/views/pivot_tests.js @@ -4,6 +4,7 @@ odoo.define('web.pivot_tests', function (require) { var core = require('web.core'); var PivotView = require('web.PivotView'); var testUtils = require('web.test_utils'); +var testUtilsDom = require('web.test_utils_dom'); var createActionManager = testUtils.createActionManager; var patchDate = testUtils.mock.patchDate; @@ -16,7 +17,7 @@ QUnit.module('Views', { this.data = { partner: { fields: { - foo: {string: "Foo", type: "integer"}, + foo: {string: "Foo", type: "integer", searchable: true}, bar: {string: "bar", type: "boolean"}, date: {string: "Date", type: "date", store: true, sortable: true}, product_id: {string: "Product", type: "many2one", relation: 'product', store: true}, @@ -1841,6 +1842,71 @@ QUnit.module('Views', { actionManager.destroy(); }); + QUnit.test('Navigation list view for a group and back with breadcrumbs', async function (assert) { + assert.expect(16); + // create an action manager to test the interactions with the search view + var readGroupCount = 0; + var actionManager = await createActionManager({ + data: this.data, + archs: { + 'partner,false,pivot': '<pivot>' + + '<field name="customer" type="row"/>' + + '</pivot>', + 'partner,false,search': '<search><filter name="bayou" string="Bayou" domain="[(\'foo\',\'=\', 12)]"/></search>', + 'partner,false,list': '<tree><field name="foo"/></tree>', + 'partner,false,form': '<form><field name="foo"/></form>', + }, + intercepts: { + do_action: function (event) { + var action = event.data.action; + actionManager.doAction(action); + } + }, + mockRPC: function (route, args) { + if (args.method === 'read_group') { + assert.step('read_group'); + var domain = args.kwargs.domain; + if ([0,1].indexOf(readGroupCount) !== -1) { + assert.deepEqual(domain, [], 'initial domain empty'); + } else if ([2,3,4,5].indexOf(readGroupCount) !== -1) { + assert.deepEqual(domain, [['foo', '=', 12]], + 'domain conserved when back with breadcrumbs'); + } + readGroupCount++; + } + if (route === '/web/dataset/search_read') { + assert.step('search_read'); + var domain = args.domain; + assert.deepEqual(domain, [['foo', '=', 12], ['customer', '=', 1], ['foo', '=', 12]], + 'list domain is correct'); + } + return this._super.apply(this, arguments); + } + }); + + await actionManager.doAction({ + res_model: 'partner', + type: 'ir.actions.act_window', + views: [[false, 'pivot']], + }); + + await testUtilsDom.click(actionManager.$('.o_filters_menu_button')); + await testUtilsDom.click(actionManager.$('.o_menu_item:contains("Bayou")')); + + await testUtilsDom.click(actionManager.$('.o_pivot_cell_value:nth(1)')) + + assert.containsOnce(actionManager, '.o_list_view'); + + await testUtilsDom.click(actionManager.$('.o_control_panel .breadcrumb-item:first() a')); + + assert.verifySteps([ + 'read_group', 'read_group', + 'read_group', 'read_group', + 'search_read', + 'read_group', 'read_group']) + actionManager.destroy(); + }); + QUnit.module('Sort in comparison mode', { beforeEach: async function () { this.data.partner.records[0].date = '2016-12-15'; |
