From 3cbfc40303dcc4e5f668050326beb6ff014bf72a Mon Sep 17 00:00:00 2001 From: David Monjoie Date: Mon, 19 Jun 2017 15:43:59 +0200 Subject: [FIX] web: fix m2o with show_address When the show_address option is enabled, the display_name of a partner becomes a newline concatenated version of his name and his address, so the internal value of the widget is this conglomerate. However, if one uses a keypress that does not change the value of the input in edit mode, say ESC for example, the keyup handler of this widget will compare the value in the input with its internal value. If the internal value is still the conglomerate, which is the case if the user hasn't changed the input content since switching in edit mode, we need to trim it to compare it to the actual input value, which is the "standard" display_name, ignoring the magic show_address feature which is only used in readonly. --- .../static/tests/fields/relational_fields_tests.js | 51 ++++++++++++++++++++++ 1 file changed, 51 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 b35a1e84000..3bf541b097d 100644 --- a/addons/web/static/tests/fields/relational_fields_tests.js +++ b/addons/web/static/tests/fields/relational_fields_tests.js @@ -199,6 +199,57 @@ QUnit.module('relational_fields', { form.destroy(); }); + QUnit.test('many2ones in form views with show_adress', function (assert) { + assert.expect(4); + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '
' + + '' + + '' + + '' + + '' + + '' + + '
', + mockRPC: function (route, args) { + if (args.method === 'name_get') { + return this._super(route, args).then(function (result) { + result[0][1] += '\nStreet\nCity ZIP'; + return result; + }); + } + return this._super(route, args); + }, + res_id: 1, + }); + + assert.strictEqual($('a.o_form_uri').html(), 'aaa
Street
City ZIP', + "input should have a multi-line content in readonly due to show_address"); + form.$buttons.find('.o_form_button_edit').click(); + assert.strictEqual(form.$('button.o_external_button:visible').length, 1, + "should have an open record button"); + + form.$('input.o_input').click(); + form.$('input.o_input').trigger($.Event('keyup', { + which: $.ui.keyCode.ESC, + keyCode: $.ui.keyCode.ESC, + })); + + assert.strictEqual(form.$('button.o_external_button:visible').length, 1, + "should still have an open record button"); + form.$('input.o_input').trigger('focusout'); + assert.strictEqual($('.modal button:contains(Create and edit)').length, 0, + "there should not be a quick create modal"); + + form.destroy(); + }); + QUnit.test('many2ones in form views with search more', function (assert) { assert.expect(3); this.data.partner.records.push({ -- cgit v1.2.3