diff --git a/addons/sms/static/src/js/fields_phone_widget.js b/addons/sms/static/src/js/fields_phone_widget.js index 4dd9a033e23..84809f2b044 100644 --- a/addons/sms/static/src/js/fields_phone_widget.js +++ b/addons/sms/static/src/js/fields_phone_widget.js @@ -79,7 +79,7 @@ Phone.include({ */ _renderReadonly: function () { var def = this._super.apply(this, arguments); - if (this.enableSMS) { + if (this.enableSMS && this.value) { var $composerButton = $('', { title: _t('Send SMS Text Message'), href: '', diff --git a/addons/sms/static/tests/sms_widget_test.js b/addons/sms/static/tests/sms_widget_test.js index 36ae6de5c1b..9a0f31e42c1 100644 --- a/addons/sms/static/tests/sms_widget_test.js +++ b/addons/sms/static/tests/sms_widget_test.js @@ -18,6 +18,15 @@ QUnit.module('fields', { message: "", }] }, + visitor: { + fields: { + mobile: {string: "mobile", type: "text"}, + }, + records: [{ + id: 1, + mobile: "+32494444444", + }] + }, }; } }, function () { @@ -32,6 +41,7 @@ QUnit.module('fields', { data: this.data, arch: '
', }); + assert.containsOnce(form, '.o_sms_count', "Should have a sms counter"); assert.strictEqual(form.$('.o_sms_count').text(), '0 characters, fits in 0 SMS (GSM7) ', 'Should be "0 characters, fits in 0 SMS (GSM7) " by default'); @@ -70,5 +80,39 @@ QUnit.module('fields', { form.destroy(); }); + + QUnit.test('Sms widgets with non-empty initial value', async function (assert) { + assert.expect(1); + var form = await createView({ + View: FormView, + model: 'visitor', + data: this.data, + arch: `
`, + res_id: 1, + res_ids: [1], + }); + + assert.strictEqual(form.$('.o_field_text').text(), '+32494444444', + 'Should have the initial value'); + + form.destroy(); + }); + + QUnit.test('Sms widgets with empty initial value', async function (assert) { + assert.expect(1); + var form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: `
`, + res_id: 1, + res_ids: [1], + }); + + assert.strictEqual(form.$('.o_field_text').text(), '', + 'Should have the empty initial value'); + + form.destroy(); + }); }); }); diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index 3be9b68cd0d..0d1fc77737f 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -1465,9 +1465,13 @@ var FieldEmail = InputField.extend({ * @private */ _renderReadonly: function () { - this.$el.text(this.value) - .addClass('o_form_uri o_text_overflow') - .attr('href', this.prefix + ':' + this.value); + if (this.value) { + this.$el.text(this.value) + .addClass('o_form_uri o_text_overflow') + .attr('href', this.prefix + ':' + this.value); + } else { + this.$el.text(''); + } }, //-------------------------------------------------------------------------- diff --git a/addons/web/static/tests/fields/basic_fields_tests.js b/addons/web/static/tests/fields/basic_fields_tests.js index 21e8ef25159..ede054eb5a9 100644 --- a/addons/web/static/tests/fields/basic_fields_tests.js +++ b/addons/web/static/tests/fields/basic_fields_tests.js @@ -31,6 +31,7 @@ QUnit.module('basic_fields', { display_name: {string: "Displayed name", type: "char", searchable: true}, foo: {string: "Foo", type: "char", default: "My little Foo Value", searchable: true, trim: true}, bar: {string: "Bar", type: "boolean", default: true, searchable: true}, + empty_string: {string: "Empty string", type: "char", default: false, searchable: true, trim: true}, txt: {string: "txt", type: "text", default: "My little txt Value\nHo-ho-hoooo Merry Christmas"}, int_field: {string: "int_field", type: "integer", sortable: true, searchable: true}, qux: {string: "Qux", type: "float", digits: [16,1], searchable: true}, @@ -996,6 +997,30 @@ QUnit.module('basic_fields', { list.destroy(); }); + QUnit.test('email field with empty value', async function (assert) { + assert.expect(1); + + var form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '
' + + '' + + '' + + '' + + '' + + '' + + '
', + res_id: 1, + }); + + var $mailtoLink = form.$('a.o_form_uri.o_field_widget.o_text_overflow'); + assert.strictEqual($mailtoLink.text(), '', + "the value should be displayed properly"); + + form.destroy(); + }); + QUnit.module('FieldChar');