-
-
Notifications
You must be signed in to change notification settings - Fork 771
/
pruning.js
51 lines (42 loc) · 2.03 KB
/
pruning.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
/*global mock, converse */
const { u } = converse.env;
describe("A Groupchat Message", function () {
it("will be pruned if it exceeds the prune_messages_above threshold",
mock.initConverse(
['chatBoxesFetched'],
{'prune_messages_above': 3},
async function (_converse) {
const muc_jid = 'lounge@montague.lit';
const model = await mock.openAndEnterChatRoom(_converse, muc_jid, 'romeo');
expect(model.ui.get('scrolled')).toBeFalsy();
model.sendMessage({'body': '1st message'});
model.sendMessage({'body': '2nd message'});
model.sendMessage({'body': '3rd message'});
await u.waitUntil(() => model.messages.length === 3);
// Make sure pruneHistory fires
await new Promise(resolve => setTimeout(resolve, 550));
model.sendMessage({'body': '4th message'});
await u.waitUntil(() => model.messages.length === 4);
await u.waitUntil(() => model.messages.length === 3, 550);
model.ui.set('scrolled', true);
model.sendMessage({'body': '5th message'});
model.sendMessage({'body': '6th message'});
await u.waitUntil(() => model.messages.length === 5);
// Wait long enough to be sure the debounced pruneHistory method didn't fire.
await new Promise(resolve => setTimeout(resolve, 550));
expect(model.messages.length).toBe(5);
model.ui.set('scrolled', false);
await u.waitUntil(() => model.messages.length === 3, 550);
// Test incoming messages
const stanza = u.toStanza(`
<message xmlns="jabber:client"
from="${muc_jid}/juliet"
to="${_converse.api.connection.get().jid}"
type="groupchat">
<body>1st incoming</body>
</message>`);
_converse.api.connection.get()._dataRecv(mock.createRequest(stanza));
await u.waitUntil(() => model.messages.length === 4);
await u.waitUntil(() => model.messages.length === 3, 550);
}));
});