From 2d3ecf29b3c089126d04978e512b16d0cd2ec585 Mon Sep 17 00:00:00 2001 From: Martin Geubelle Date: Mon, 22 Jan 2018 16:35:49 +0100 Subject: [FIX] web: handle nested x2m default values A `default_get` for a x2many field can return a new list of commands for one of its x2many field, like [[0, 0, { 'groups_id': [[6, 0, [1, 2, 3]]], }]] where [1, 2, 3] is a list of existing ids. This use case was not correctly handled by the BasicModel because `_makeDefaultRecord` was not recursive. Closes #22401 --- .../static/tests/fields/relational_fields_tests.js | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'addons/web/static/tests/fields/relational_fields_tests.js') diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js index fcb852907e3..be922d3fa1a 100644 --- a/addons/web/static/tests/fields/relational_fields_tests.js +++ b/addons/web/static/tests/fields/relational_fields_tests.js @@ -6201,6 +6201,38 @@ QUnit.module('relational_fields', { form.destroy(); }); + QUnit.test('nested x2many default values', function (assert) { + assert.expect(2); + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '
' + + '' + + '' + + '' + + '' + + '' + + '
', + mockRPC: function (route, args) { + if (args.model === 'partner' && args.method === 'default_get') { + return $.when({turtles: [[0, 0, { + partner_ids: [[6, 0, [4]]], + }]]}); + } + return this._super.apply(this, arguments); + }, + }); + + assert.strictEqual(form.$('.o_list_view .o_field_many2manytags[name="partner_ids"] .badge').length, 1, + "m2mtags should contain one tag"); + assert.strictEqual(form.$('.o_list_view .o_field_many2manytags[name="partner_ids"] .o_badge_text').text(), + 'aaa', "tag name should have been correctly loaded"); + + form.destroy(); + }); + QUnit.test('one2many (who contains display_name) with tree view and without form view', function (assert) { assert.expect(1); -- cgit v1.2.3