diff options
| author | Parth Gajjar <pga@openerp.com> | 2017-05-31 19:30:46 +0530 |
|---|---|---|
| committer | Géry Debongnie <ged@odoo.com> | 2017-06-01 11:26:53 +0200 |
| commit | d24ea500e6ecfdd6c3d7b10d84367d1f4b4945f9 (patch) | |
| tree | dfbb69a90334b05f0fea87ea8558bfdde6d98626 | |
| parent | eb24f9644818f4cd18b947b3759dc126a953cf32 (diff) | |
[FIX] web: basicmodel: properly link parent in m2m
In some cases, the parentID was not properly set, which is a problem
when we need to evaluate the parent in a context.
Note: I also added a better error explanation in the mock server, to
make it better for the developper to see what is wrong.
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_model.js | 1 | ||||
| -rw-r--r-- | addons/web/static/tests/helpers/mock_server.js | 3 | ||||
| -rw-r--r-- | addons/web/static/tests/views/basic_model_tests.js | 34 |
3 files changed, 38 insertions, 0 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index 742e59a61c5..eef858ddcfa 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -1168,6 +1168,7 @@ var BasicModel = AbstractModel.extend({ fieldsInfo: view ? view.fieldsInfo : fieldInfo.fieldsInfo, res_id: d.id, viewType: view ? view.type : fieldInfo.viewType, + parentID: list.id, }); list_records[d.id] = rec; list._changes.push(rec.id); diff --git a/addons/web/static/tests/helpers/mock_server.js b/addons/web/static/tests/helpers/mock_server.js index 1f4160a3e41..e98a9abe5ea 100644 --- a/addons/web/static/tests/helpers/mock_server.js +++ b/addons/web/static/tests/helpers/mock_server.js @@ -196,6 +196,9 @@ var MockServer = Class.extend({ // 'transfer_field_to_modifiers' simulation var field = fields[node.attrs.name]; + if (!field) { + throw new Error("Field " + node.attrs.name + " does not exist"); + } var defaultValues = {}; var stateExceptions = {}; _.each(modifiersNames, function (attr) { diff --git a/addons/web/static/tests/views/basic_model_tests.js b/addons/web/static/tests/views/basic_model_tests.js index cc3834e188e..2a4b1e71349 100644 --- a/addons/web/static/tests/views/basic_model_tests.js +++ b/addons/web/static/tests/views/basic_model_tests.js @@ -407,6 +407,40 @@ QUnit.module('Views', { model.destroy(); }); + QUnit.test('many2many with ADD_M2M command and context with parent key', function (assert) { + assert.expect(1); + + this.data.partner_type.fields.some_char = {type: "char"}; + this.params.fieldsInfo = { + default: { + category: { + fieldsInfo: {default: {some_char: { context: "{'a': parent.foo}"}}}, + relatedFields: {some_char: {type: "char"}}, + viewType: 'default', + }, + foo: {}, + }, + }; + + var model = createModel({ + Model: BasicModel, + data: this.data, + }); + + model.load(this.params).then(function (resultID) { + var changes = { + category: {operation: 'ADD_M2M', ids: [{id: 12}]} + }; + model.notifyChanges(resultID, changes).then(function () { + var record = model.get(resultID); + var categoryRecord = record.data.category.data[0]; + assert.deepEqual(categoryRecord.getContext({fieldName: 'some_char'}), {a:'gnap'}, + "should properly evaluate context"); + }); + }); + model.destroy(); + }); + QUnit.test('can fetch a list', function (assert) { assert.expect(4); |
