diff options
Diffstat (limited to 'addons/web/static/tests/views/form_benchmarks.js')
| -rw-r--r-- | addons/web/static/tests/views/form_benchmarks.js | 168 |
1 files changed, 86 insertions, 82 deletions
diff --git a/addons/web/static/tests/views/form_benchmarks.js b/addons/web/static/tests/views/form_benchmarks.js index efd12741d66..b65e8a4ccce 100644 --- a/addons/web/static/tests/views/form_benchmarks.js +++ b/addons/web/static/tests/views/form_benchmarks.js @@ -1,94 +1,98 @@ odoo.define('web.form_benchmarks', function (require) { -"use strict"; + "use strict"; -var FormView = require('web.FormView'); -var testUtils = require('web.test_utils'); + const FormView = require('web.FormView'); + const testUtils = require('web.test_utils'); -var createView = testUtils.createView; + const { createView } = testUtils; -QUnit.module('Form View', { - beforeEach: function () { - this.data = { - foo: { - fields: { - many2many: { string: "bar", type: "many2many", relation: 'bar'}, + QUnit.module('Form View', { + beforeEach: function () { + this.data = { + foo: { + fields: { + foo: {string: "Foo", type: "char"}, + many2many: { string: "bar", type: "many2many", relation: 'bar'}, + }, + records: [ + { id: 1, foo: "bar", many2many: []}, + ], + onchanges: {} }, - records: [ - { id: 1, many2many: []}, - ], - onchanges: {} - }, - bar: { - fields: { - char: {string: "char", type: "char"}, - many2many: { string: "pokemon", type: "many2many", relation: 'pokemon'}, + bar: { + fields: { + char: {string: "char", type: "char"}, + many2many: { string: "pokemon", type: "many2many", relation: 'pokemon'}, + }, + records: [], + onchanges: {} }, - records: [], - onchanges: {} - }, - pokemon: { - fields: { - name: {string: "Name", type: "char"}, + pokemon: { + fields: { + name: {string: "Name", type: "char"}, + }, + records: [], + onchanges: {} }, - records: [], - onchanges: {} - }, - }; - this.arch = null; - this.run = function (assert, done, cb) { - var data = this.data; - var arch = this.arch; - new Benchmark.Suite({}) - .add('form', function () { - var list = createView({ - View: FormView, - model: 'foo', - data: data, - arch: arch, - res_id: 1, - }); - if (cb) { - cb(list); - } - list.destroy(); - }) - .on('cycle', function(event) { - assert.ok(true, String(event.target)); - }) - .on('complete', done) - .run({ 'async': true }); - }; - } -}, function () { - QUnit.test('x2many with 250 rows, 2 fields (with many2many_tags, and modifiers), onchanges, and edition', function (assert) { - var done = assert.async(); - assert.expect(1); + }; + this.arch = null; + this.run = function (assert, viewParams, cb) { + const data = this.data; + const arch = this.arch; + return new Promise(resolve => { + new Benchmark.Suite({}) + .add('form', { + defer: true, + fn: async (deferred) => { + const form = await createView(Object.assign({ + View: FormView, + model: 'foo', + data, + arch, + }, viewParams)); + if (cb) { + await cb(form); + } + form.destroy(); + deferred.resolve(); + }, + }) + .on('cycle', event => { + assert.ok(true, String(event.target)); + }) + .on('complete', resolve) + .run({ async: true }); + }); + }; + } + }, function () { + QUnit.test('x2many with 250 rows, 2 fields (with many2many_tags, and modifiers), onchanges, and edition', function (assert) { + assert.expect(1); - this.data.foo.onchanges.many2many = function (obj) { - obj.many2many = [5].concat(obj.many2many); - }; - for (var i = 2; i < 500; i) { - this.data.bar.records.push({ - id: i, - char: "automated data", + this.data.foo.onchanges.many2many = function (obj) { + obj.many2many = [5].concat(obj.many2many); + }; + for (let i = 2; i < 500; i++) { + this.data.bar.records.push({ + id: i, + char: "automated data", + }); + this.data.foo.records[0].many2many.push(i); + } + this.arch = ` + <form> + <field name="many2many"> + <tree editable="top" limit="250"> + <field name="char"/> + <field name="many2many" widget="many2many_tags" attrs="{'readonly': [('char', '==', 'toto')]}"/> + </tree> + </field> + </form>`; + return this.run(assert, { res_id: 1 }, async form => { + await testUtils.form.clickEdit(form); + await testUtils.dom.click(form.$('.o_data_cell:first')); + await testUtils.fields.editInput(form.$('input:first'), "tralala"); }); - this.data.foo.records[0].many2many.push(i); - } - this.arch = - '<form string="Partners">' + - '<field name="many2many">' + - '<tree editable="top" limit="250">' + - '<field name="char"/>' + - '<field name="many2many" widget="many2many_tags" attrs="{\'readonly\': [(\'char\', \'==\', \'toto\')]}"/>' + - '</tree>' + - '</field>' + - '</form>'; - this.run(assert, done, function (form) { - testUtils.form.clickEdit(form); - form.$('.o_data_cell:first').click(); - form.$('input:first').val("tralala").trigger('input'); }); }); }); - -});
\ No newline at end of file |
