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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
odoo.define('hr.StandaloneM2OEmployeeTests', function (require) {
"use strict";
const { xml } = owl.tags;
const AbstractRendererOwl = require('web.AbstractRendererOwl');
const BasicView = require("web.BasicView");
const BasicRenderer = require("web.BasicRenderer");
const RendererWrapper = require('web.RendererWrapper');
const { createView } = require('web.test_utils');
const StandaloneM2OAvatarEmployee = require('hr.StandaloneM2OAvatarEmployee');
function getHtmlRenderer(html) {
return BasicRenderer.extend({
start: function () {
this.$el.html(html);
return this._super.apply(this, arguments);
}
});
}
function getOwlView(owlRenderer, viewType) {
viewType = viewType || "test";
return BasicView.extend({
viewType: viewType,
config: Object.assign({}, BasicView.prototype.config, {
Renderer: owlRenderer,
}),
getRenderer() {
return new RendererWrapper(null, this.config.Renderer, {});
}
});
}
function getHtmlView(html, viewType) {
viewType = viewType || "test";
return BasicView.extend({
viewType: viewType,
config: Object.assign({}, BasicView.prototype.config, {
Renderer: getHtmlRenderer(html)
})
});
}
QUnit.module('hr', {}, function () {
QUnit.module('StandaloneM2OEmployeeTests', {
beforeEach: function () {
this.data = {
'foo': {
fields: {
employee_id: {string: "Employee", type: 'many2one', relation: 'hr.employee'},
},
records: [],
},
'hr.employee': {
fields: {},
records: [
{id: 10, name: "Mario"},
{id: 20, name: "Luigi"},
{id: 30, name: "Yoshi"}
],
},
};
},
});
QUnit.test('standalone_m2o_avatar_employee: legacy view', async function (assert) {
assert.expect(1);
const html = "<div class='coucou_test'></div>";
const view = await createView({
View: getHtmlView(html, "test"),
data: this.data,
model: "foo",
arch: "<test/>"
});
const avatar10 = new StandaloneM2OAvatarEmployee(view, 10);
const avatar20 = new StandaloneM2OAvatarEmployee(view, 20);
const avatar30 = new StandaloneM2OAvatarEmployee(view, [30, 'Bowser']);
await avatar10.appendTo(view.el.querySelector('.coucou_test'));
await avatar20.appendTo(view.el.querySelector('.coucou_test'));
await avatar30.appendTo(view.el.querySelector('.coucou_test'));
assert.deepEqual(
[...view.el.querySelectorAll('.o_field_many2one_avatar span')].map(el => el.innerText),
["Mario", "Luigi", "Bowser"]
);
view.destroy();
});
QUnit.test('standalone_m2o_avatar_employee: Owl view', async function (assert) {
assert.expect(1);
class Renderer extends AbstractRendererOwl { }
Renderer.template = xml`<div class='coucou_test'></div>`;
const view = await createView({
View: getOwlView(Renderer, "test"),
data: this.data,
model: "foo",
arch: "<test/>"
});
const avatar10 = new StandaloneM2OAvatarEmployee(view, 10);
const avatar20 = new StandaloneM2OAvatarEmployee(view, 20);
const avatar30 = new StandaloneM2OAvatarEmployee(view, [30, 'Bowser']);
await avatar10.appendTo(view.el.querySelector('.coucou_test'));
await avatar20.appendTo(view.el.querySelector('.coucou_test'));
await avatar30.appendTo(view.el.querySelector('.coucou_test'));
assert.deepEqual(
[...view.el.querySelectorAll('.o_field_many2one_avatar span')].map(el => el.innerText),
["Mario", "Luigi", "Bowser"]
);
view.destroy();
});
});
});
|