diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/web/static/tests/views/list_benchmarks.js | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/web/static/tests/views/list_benchmarks.js')
| -rw-r--r-- | addons/web/static/tests/views/list_benchmarks.js | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/addons/web/static/tests/views/list_benchmarks.js b/addons/web/static/tests/views/list_benchmarks.js new file mode 100644 index 00000000..92d70054 --- /dev/null +++ b/addons/web/static/tests/views/list_benchmarks.js @@ -0,0 +1,113 @@ +odoo.define('web.list_benchmarks', function (require) { + "use strict"; + + const ListView = require('web.ListView'); + const { createView } = require('web.test_utils'); + + QUnit.module('List View', { + beforeEach: function () { + this.data = { + foo: { + fields: { + foo: {string: "Foo", type: "char"}, + bar: {string: "Bar", type: "boolean"}, + int_field: {string: "int_field", type: "integer", sortable: true}, + qux: {string: "my float", type: "float"}, + }, + records: [ + {id: 1, bar: true, foo: "yop", int_field: 10, qux: 0.4}, + {id: 2, bar: true, foo: "blip", int_field: 9, qux: 13}, + ] + }, + }; + this.arch = null; + this.run = function (assert, cb) { + const data = this.data; + const arch = this.arch; + return new Promise(resolve => { + new Benchmark.Suite({}) + .add('list', { + defer: true, + fn: async (deferred) => { + const list = await createView({ + View: ListView, + model: 'foo', + data, + arch, + }); + if (cb) { + cb(list); + } + list.destroy(); + deferred.resolve(); + }, + }) + .on('cycle', event => { + assert.ok(true, String(event.target)); + }) + .on('complete', resolve) + .run({ async: true }); + }); + }; + } + }, function () { + QUnit.test('simple readonly list with 2 rows and 2 fields', function (assert) { + assert.expect(1); + + this.arch = '<tree><field name="foo"/><field name="int_field"/></tree>'; + return this.run(assert); + }); + + QUnit.test('simple readonly list with 200 rows and 2 fields', function (assert) { + assert.expect(1); + + for (let i = 2; i < 200; i++) { + this.data.foo.records.push({ + id: i, + foo: "automated data", + int_field: 10 * i, + }); + } + this.arch = '<tree><field name="foo"/><field name="int_field"/></tree>'; + return this.run(assert); + }); + + QUnit.test('simple readonly list with 200 rows and 2 fields (with widgets)', function (assert) { + assert.expect(1); + + for (let i = 2; i < 200; i++) { + this.data.foo.records.push({ + id: i, + foo: "automated data", + int_field: 10 * i, + }); + } + this.arch = '<tree><field name="foo" widget="char"/><field name="int_field" widget="integer"/></tree>'; + return this.run(assert); + }); + + QUnit.test('editable list with 200 rows 4 fields', function (assert) { + assert.expect(1); + + for (let i = 2; i < 200; i++) { + this.data.foo.records.push({ + id: i, + foo: "automated data", + int_field: 10 * i, + bar: i % 2 === 0, + }); + } + this.arch = ` + <tree editable="bottom"> + <field name="foo" attrs="{'readonly': [['bar', '=', True]]}"/> + <field name="int_field"/> + <field name="bar"/> + <field name="qux"/> + </tree>`; + return this.run(assert, list => { + list.$('.o_list_button_add').click(); + list.$('.o_list_button_discard').click(); + }); + }); + }); +}); |
