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
|
odoo.define('im_livechat/static/src/components/messaging_menu/messaging_menu_tests.js', function (require) {
'use strict';
const {
afterEach,
afterNextRender,
beforeEach,
start,
} = require('mail/static/src/utils/test_utils.js');
QUnit.module('im_livechat', {}, function () {
QUnit.module('components', {}, function () {
QUnit.module('messaging_menu', {}, function () {
QUnit.module('messaging_menu_tests.js', {
beforeEach() {
beforeEach(this);
this.start = async params => {
let { env, widget } = await start(Object.assign({}, params, {
data: this.data,
hasMessagingMenu: true,
}));
this.env = env;
this.widget = widget;
};
},
afterEach() {
afterEach(this);
},
});
QUnit.test('livechats should be in "chat" filter', async function (assert) {
assert.expect(7);
this.data['mail.channel'].records.push({
anonymous_name: "Visitor 11",
channel_type: 'livechat',
id: 11,
livechat_operator_id: this.data.currentPartnerId,
members: [this.data.currentPartnerId, this.data.publicPartnerId],
});
await this.start();
assert.containsOnce(
document.body,
'.o_MessagingMenu',
"should have messaging menu"
);
await afterNextRender(() => document.querySelector('.o_MessagingMenu_toggler').click());
assert.containsOnce(
document.body,
'.o_MessagingMenu_tabButton[data-tab-id="all"]',
"should have a tab/filter 'all' in messaging menu"
);
assert.containsOnce(
document.body,
'.o_MessagingMenu_tabButton[data-tab-id="chat"]',
"should have a tab/filter 'chat' in messaging menu"
);
assert.hasClass(
document.querySelector('.o_MessagingMenu_tabButton[data-tab-id="all"]'),
'o-active',
"tab/filter 'all' of messaging menu should be active initially"
);
assert.containsOnce(
document.body,
`.o_ThreadPreview[data-thread-local-id="${
this.env.models['mail.thread'].findFromIdentifyingData({
id: 11,
model: 'mail.channel',
}).localId
}"]`,
"livechat should be listed in 'all' tab/filter of messaging menu"
);
await afterNextRender(() =>
document.querySelector('.o_MessagingMenu_tabButton[data-tab-id="chat"]').click()
);
assert.hasClass(
document.querySelector('.o_MessagingMenu_tabButton[data-tab-id="chat"]'),
'o-active',
"tab/filter 'chat' of messaging menu should become active after click"
);
assert.containsOnce(
document.body,
`.o_ThreadPreview[data-thread-local-id="${
this.env.models['mail.thread'].findFromIdentifyingData({
id: 11,
model: 'mail.channel',
}).localId
}"]`,
"livechat should be listed in 'chat' tab/filter of messaging menu"
);
});
});
});
});
});
|