diff options
| author | Christophe Simonis <chs@odoo.com> | 2017-12-12 18:39:43 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2017-12-12 18:39:43 +0100 |
| commit | b37cc1f9b7897759a86cdccfa1b06d58361a97da (patch) | |
| tree | f43246fae635fe7c33114c02ef437756f6387ae4 /addons/web/static/tests/fields/relational_fields_tests.js | |
| parent | 9d2d9a3528c7cf595c5f1d040ebf13748497add8 (diff) | |
| parent | a2ea4ba095cd82adae4cac917aa2485d30c8071e (diff) | |
[MERGE] forward port branch saas-16 up to a2ea4ba095c
Diffstat (limited to 'addons/web/static/tests/fields/relational_fields_tests.js')
| -rw-r--r-- | addons/web/static/tests/fields/relational_fields_tests.js | 92 |
1 files changed, 91 insertions, 1 deletions
diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js index 205473f3191..0739a6252ca 100644 --- a/addons/web/static/tests/fields/relational_fields_tests.js +++ b/addons/web/static/tests/fields/relational_fields_tests.js @@ -258,6 +258,31 @@ QUnit.module('relational_fields', { form.destroy(); }); + QUnit.test('context in many2one and default get', function (assert) { + assert.expect(1); + + this.data.partner.fields.int_field.default = 14; + this.data.partner.fields.trululu.default = 2; + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '<form string="Partners">' + + '<field name="int_field"/>' + + '<field name="trululu" context="{\'blip\':int_field}"/>' + + '</form>', + mockRPC: function (route, args) { + if (args.method === 'name_get') { + assert.strictEqual(args.kwargs.context.blip, 14, + 'context should have been properly sent to the nameget rpc'); + } + return this._super(route, args); + }, + }); + form.destroy(); + }); + QUnit.test('editing a many2one (with form view opened with external button)', function (assert) { assert.expect(1); var form = createView({ @@ -6713,6 +6738,63 @@ QUnit.module('relational_fields', { form.destroy(); }); + QUnit.test('one2many field: change value before pending onchange returns', function (assert) { + var done = assert.async(); + assert.expect(2); + + var M2O_DELAY = relationalFields.FieldMany2One.prototype.AUTOCOMPLETE_DELAY; + relationalFields.FieldMany2One.prototype.AUTOCOMPLETE_DELAY = 0; + + this.data.partner.onchanges = { + int_field: function () {} + }; + var def; + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch:'<form string="Partners">' + + '<field name="p">' + + '<tree editable="bottom">' + + '<field name="int_field"/>' + + '<field name="trululu"/>' + + '</tree>' + + '</field>' + + '</form>', + mockRPC: function (route, args) { + var result = this._super.apply(this, arguments); + if (args.method === 'onchange') { + // delay the onchange RPC + return $.when(def).then(_.constant(result)); + } + return result; + }, + }); + + form.$('.o_field_x2many_list_row_add a').click(); + def = $.Deferred(); + form.$('.o_field_widget[name=int_field]') + .val('44') + .trigger('input'); + + var $dropdown = form.$('.o_field_many2one input').autocomplete('widget'); + // set trululu before onchange + form.$('.o_field_many2one input').val('first').trigger('keydown').trigger('keyup'); + // complete the onchange + def.resolve(); + assert.strictEqual(form.$('.o_field_many2one input').val(), 'first', + 'should have kept the new value'); + concurrency.delay(0).then(function () { + // check name_search result + assert.strictEqual($dropdown.find('li:not(.o_m2o_dropdown_option)').length, 1, + 'autocomplete should contains 1 suggestion'); + + relationalFields.FieldMany2One.prototype.AUTOCOMPLETE_DELAY = M2O_DELAY; + form.destroy(); + done(); + }); + }); + QUnit.test('focus is correctly reset after an onchange in an x2many', function (assert) { assert.expect(2); @@ -8622,7 +8704,7 @@ QUnit.module('relational_fields', { }); QUnit.test('fieldmany2many tags in editable list', function (assert) { - assert.expect(4); + assert.expect(7); this.data.partner.records[0].timmy = [12]; @@ -8630,10 +8712,18 @@ QUnit.module('relational_fields', { View: ListView, model: 'partner', data: this.data, + context: {take: 'five'}, arch:'<tree editable="bottom">' + '<field name="foo"/>' + '<field name="timmy" widget="many2many_tags"/>' + '</tree>', + mockRPC: function (route, args) { + if (args.method === 'read' && args.model === 'partner_type') { + assert.deepEqual(args.kwargs.context, {take: 'five'}, + 'The context should be passed to the RPC'); + } + return this._super.apply(this, arguments); + } }); assert.strictEqual(list.$('.o_data_row:first .o_field_many2manytags .badge').length, 1, |
