summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/views/form_benchmarks.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/tests/views/form_benchmarks.js')
-rw-r--r--addons/web/static/tests/views/form_benchmarks.js168
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