-
-
Notifications
You must be signed in to change notification settings - Fork 771
/
component.js
95 lines (74 loc) · 4.11 KB
/
component.js
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
/*global mock, converse */
const u = converse.env.utils;
describe("The <converse-muc> component", function () {
it("can be rendered as a standalone component",
mock.initConverse([], {'auto_insert': false}, async function (_converse) {
const { api } = _converse;
const muc_jid = 'lounge@montague.lit';
const nick = 'romeo';
const muc_creation_promise = await api.rooms.open(muc_jid, {nick, 'hidden': true}, false);
await mock.getRoomFeatures(_converse, muc_jid, []);
await mock.receiveOwnMUCPresence(_converse, muc_jid, nick);
await muc_creation_promise;
const model = _converse.chatboxes.get(muc_jid);
await u.waitUntil(() => (model.session.get('connection_status') === converse.ROOMSTATUS.ENTERED));
const span_el = document.createElement('span');
span_el.classList.add('conversejs');
span_el.classList.add('converse-embedded');
const muc_el = document.createElement('converse-muc');
muc_el.classList.add('chatbox');
muc_el.classList.add('chatroom');
muc_el.setAttribute('jid', muc_jid);
span_el.appendChild(muc_el);
const body = document.querySelector('body');
body.appendChild(span_el);
await u.waitUntil(() => muc_el.querySelector('converse-muc-bottom-panel'));
body.removeChild(span_el);
expect(true).toBe(true);
}));
it("will update correctly when the jid property changes",
mock.initConverse([], {'auto_insert': false}, async function (_converse) {
const { api } = _converse;
const muc_jid = 'lounge@montague.lit';
const nick = 'romeo';
const muc_creation_promise = api.rooms.open(muc_jid, {nick, 'hidden': true}, false);
await mock.getRoomFeatures(_converse, muc_jid, []);
await mock.receiveOwnMUCPresence(_converse, muc_jid, nick);
await muc_creation_promise;
const model = _converse.chatboxes.get(muc_jid);
await u.waitUntil(() => (model.session.get('connection_status') === converse.ROOMSTATUS.ENTERED));
const affs = api.settings.get('muc_fetch_members');
const all_affiliations = Array.isArray(affs) ? affs : (affs ? ['member', 'admin', 'owner'] : []);
await mock.returnMemberLists(_converse, muc_jid, [], all_affiliations);
await model.messages.fetched;
model.sendMessage({'body': 'hello from the lounge!'});
const span_el = document.createElement('span');
span_el.classList.add('conversejs');
span_el.classList.add('converse-embedded');
const muc_el = document.createElement('converse-muc');
muc_el.classList.add('chatbox');
muc_el.classList.add('chatroom');
muc_el.setAttribute('jid', muc_jid);
span_el.appendChild(muc_el);
const body = document.querySelector('body');
body.appendChild(span_el);
await u.waitUntil(() => muc_el.querySelector('converse-muc-bottom-panel'));
muc_el.querySelector('.box-flyout').setAttribute('style', 'height: 80vh');
const message = await u.waitUntil(() => muc_el.querySelector('converse-chat-message'));
expect(message.model.get('body')).toBe('hello from the lounge!');
_converse.api.connection.get().sent_stanzas = [];
const muc2_jid = 'bar@montague.lit';
const muc2_creation_promise = api.rooms.open(muc2_jid, {nick, 'hidden': true}, false);
await mock.getRoomFeatures(_converse, muc2_jid, []);
await mock.receiveOwnMUCPresence(_converse, muc2_jid, nick);
await muc2_creation_promise;
const model2 = _converse.chatboxes.get(muc2_jid);
await u.waitUntil(() => (model.session.get('connection_status') === converse.ROOMSTATUS.ENTERED));
await mock.returnMemberLists(_converse, muc2_jid, [], all_affiliations);
await model.messages.fetched;
model2.sendMessage({'body': 'hello from the bar!'});
muc_el.setAttribute('jid', muc2_jid);
await u.waitUntil(() => muc_el.querySelector('converse-chat-message-body').textContent.trim() === 'hello from the bar!');
body.removeChild(span_el);
}));
});