From c77c49881bc5e09e1a70936e79c949aa04ffa14d Mon Sep 17 00:00:00 2001 From: tsm-odoo Date: Wed, 4 May 2022 11:41:23 +0000 Subject: [PATCH] [FIX] web: remove unnecessary parameter in mocked method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The recordId parameter was not necessary in the _updateComodelRelationalFields method of the legacy mock_server closes odoo/odoo#90497 Signed-off-by: Sébastien Theys (seb) --- .../tests/legacy/helpers/mock_server.js | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/addons/web/static/tests/legacy/helpers/mock_server.js b/addons/web/static/tests/legacy/helpers/mock_server.js index 055e6646067..f9767b2e0ef 100644 --- a/addons/web/static/tests/legacy/helpers/mock_server.js +++ b/addons/web/static/tests/legacy/helpers/mock_server.js @@ -51,10 +51,13 @@ var MockServer = Class.extend({ }); } } + // used to prevent _updateComodelRelationalFields to be trigerred during + // initial record creation. + this.isInitialized = true; // fill relational fields' inverse. for (const modelName in this.data) { - this.data[modelName].records.forEach(record => this._updateComodelRelationalFields(modelName, record.id, record)); + this.data[modelName].records.forEach(record => this._updateComodelRelationalFields(modelName, record)); } this.debug = options.debug; @@ -585,7 +588,9 @@ var MockServer = Class.extend({ model.records.push(record); this._applyDefaults(model, values); this._writeRecord(modelName, values, id); - this._updateComodelRelationalFields(modelName, id, values); + if (this.isInitialized) { + this._updateComodelRelationalFields(modelName, record); + } return id; }, /** @@ -1930,7 +1935,7 @@ var MockServer = Class.extend({ const originalRecord = this._mockSearchRead(model, [[['id', '=', id]]], {})[0]; this._writeRecord(model, args[1], id); const updatedRecord = this.data[model].records.find(record => record.id === id); - this._updateComodelRelationalFields(model, id, updatedRecord, originalRecord); + this._updateComodelRelationalFields(model, updatedRecord, originalRecord); }); return true; }, @@ -2101,7 +2106,7 @@ var MockServer = Class.extend({ * @param {Object} record record that have been created/updated. * @param {Object|undefined} originalRecord record before update. */ - _updateComodelRelationalFields(modelName, recordId, record, originalRecord) { + _updateComodelRelationalFields(modelName, record, originalRecord) { for (const fname in record) { const field = this.data[modelName].fields[fname]; const comodelName = field.relation || record[field['model_name_ref_fname']]; @@ -2114,19 +2119,19 @@ var MockServer = Class.extend({ // we only want to set a value for comodel inverse field if the model field has a value. if (record[fname]) { for (const relatedRecordId of relatedRecordIds) { - let inverseFieldNewValue = recordId; + let inverseFieldNewValue = record.id; const relatedRecord = this.data[comodelName].records.find(record => record.id === relatedRecordId); const relatedFieldValue = relatedRecord && relatedRecord[inverseFieldName]; if ( relatedFieldValue === undefined || - relatedFieldValue === recordId || - field.type !== 'one2many' && relatedFieldValue.includes(recordId) + relatedFieldValue === record.id || + field.type !== 'one2many' && relatedFieldValue.includes(record.id) ) { // related record does not exist or the related value is already up to date. continue; } if (Array.isArray(relatedFieldValue)) { - inverseFieldNewValue = [...relatedFieldValue, recordId]; + inverseFieldNewValue = [...relatedFieldValue, record.id]; } this._writeRecord(comodelName, { [inverseFieldName]: inverseFieldNewValue }, relatedRecordId); } @@ -2134,7 +2139,7 @@ var MockServer = Class.extend({ // we need to clean the many2one_field as well. const comodel_inverse_field = this.data[comodelName].fields[inverseFieldName]; const model_many2one_field = comodel_inverse_field['inverse_fname_by_model_name'][modelName]; - this._writeRecord(modelName, { [model_many2one_field]: false }, recordId); + this._writeRecord(modelName, { [model_many2one_field]: false }, record.id); } // it's an update, get the records that were originally referenced but are not // anymore and update their relational fields. @@ -2149,7 +2154,7 @@ var MockServer = Class.extend({ } let inverseFieldNewValue = false; if (Array.isArray(removedRecord[inverseFieldName])) { - inverseFieldNewValue = removedRecord[inverseFieldName].filter(id => id !== recordId); + inverseFieldNewValue = removedRecord[inverseFieldName].filter(id => id !== record.id); } this._writeRecord(comodelName, { [inverseFieldName]: inverseFieldNewValue }, removedRecordId); }