UNPKG

@converse/headless

Version:

Converse.js Headless build

50 lines (42 loc) 2.27 kB
import mock from '../../../tests/mock.js'; import converse from '../../../dist/converse-headless.js'; const { u } = converse.env; describe('A Groupchat Message', function () { it( 'will be pruned if it exceeds the prune_messages_above threshold', mock.initConverse(converse, ['chatBoxesFetched'], { 'prune_messages_above': 3 }, async function (_converse) { const muc_jid = 'lounge@montague.lit'; const model = await mock.openAndEnterMUC(_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(_converse, stanza)); await u.waitUntil(() => model.messages.length === 4); await u.waitUntil(() => model.messages.length === 3, 550); }), ); });