summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/views/kanban_benchmarks.js
blob: 020067cb45c8f678088d88e3a297e548fd95aabb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
odoo.define('web.kanban_benchmarks', function (require) {
    "use strict";

    const KanbanView = require('web.KanbanView');
    const { createView } = require('web.test_utils');

    QUnit.module('Kanban 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) {
                const data = this.data;
                const arch = this.arch;
                return new Promise(resolve => {
                    new Benchmark.Suite({})
                        .add('kanban', {
                            defer: true,
                            fn: async (deferred) => {
                                const kanban = await createView({
                                    View: KanbanView,
                                    model: 'foo',
                                    data,
                                    arch,
                                });
                                kanban.destroy();
                                deferred.resolve();
                            },
                        })
                        .on('cycle', event => {
                            assert.ok(true, String(event.target));
                        })
                        .on('complete', resolve)
                        .run({ async: true });
                });
            };
        }
    }, function () {
        QUnit.test('simple kanban view with 2 records', function (assert) {
            assert.expect(1);

            this.arch = `
                <kanban>
                    <templates>
                        <t t-name="kanban-box">
                            <div>
                                <t t-esc="record.foo.value"/>
                                <field name="foo"/>
                            </div>
                        </t>
                    </templates>
                </kanban>`;
            return this.run(assert);
        });

        QUnit.test('simple kanban view with 200 records', function (assert) {
            assert.expect(1);

            for (let i = 2; i < 200; i++) {
                this.data.foo.records.push({
                    id: i,
                    foo: `automated data ${i}`,
                });
            }

            this.arch = `
                <kanban>
                    <templates>
                        <t t-name="kanban-box">
                            <div>
                                <t t-esc="record.foo.value"/>
                                <field name="foo"/>
                            </div>
                        </t>
                    </templates>
                </kanban>`;
            return this.run(assert);
        });
    });
});