diff --git a/addons/web/static/src/legacy/js/fields/relational_fields.js b/addons/web/static/src/legacy/js/fields/relational_fields.js index e16e66a3774..fdbe1ea30d4 100644 --- a/addons/web/static/src/legacy/js/fields/relational_fields.js +++ b/addons/web/static/src/legacy/js/fields/relational_fields.js @@ -3449,14 +3449,6 @@ var FieldRadio = FieldSelection.extend({ return checked.length ? checked : this.$("[data-index='0']"); }, - /** - * @override - * @returns {boolean} always true - */ - isSet: function () { - return true; - }, - /** * Associates the 'for' attribute to the radiogroup, instead of the selected * radio button. diff --git a/addons/web/static/tests/legacy/fields/relational_fields_tests.js b/addons/web/static/tests/legacy/fields/relational_fields_tests.js index 23558857b3b..a7473396140 100644 --- a/addons/web/static/tests/legacy/fields/relational_fields_tests.js +++ b/addons/web/static/tests/legacy/fields/relational_fields_tests.js @@ -2329,6 +2329,34 @@ QUnit.module('relational_fields', { form.destroy(); }); + QUnit.test('required fieldradio widget on a many2one', async function (assert) { + assert.expect(6); + + const form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '
' + + '' + + '', + }); + + testUtils.mock.intercept(form, 'call_service', function (event) { + if (event.data.service === 'notification' && event.data.method === 'notify') { + assert.step('danger'); + assert.equal(event.data.args[0].type, 'danger'); + assert.equal(event.data.args[0].title, 'Invalid fields:'); + assert.equal(event.data.args[0].message, ''); + } + }); + + assert.containsNone(form, 'input:checked', "none of the input should be checked"); + + await testUtils.form.clickSave(form); + assert.verifySteps(['danger']); + form.destroy(); + }); + QUnit.test('fieldradio change value by onchange', async function (assert) { assert.expect(4);