/*global mock, converse */ const { Strophe } = converse.env; const u = converse.env.utils; // See: https://xmpp.org/rfcs/rfc3921.html fdescribe("XEP-0437 Room Activity Indicators", function () { it("will be activated for a MUC that becomes hidden", mock.initConverse( ['rosterGroupsFetched'], {'muc_subscribe_to_rai': true, 'view_mode': 'fullscreen'}, async function (done, _converse) { expect(_converse.session.get('rai_enabled_domains')).toBe(undefined); const muc_jid = 'lounge@montague.lit'; await mock.openAndEnterChatRoom(_converse, muc_jid, 'romeo'); const view = _converse.api.chatviews.get(muc_jid); expect(view.model.get('hidden')).toBe(false); const sent_IQs = _converse.connection.IQ_stanzas; const iq_get = await u.waitUntil(() => sent_IQs.filter(iq => iq.querySelector(`iq query[xmlns="${Strophe.NS.MAM}"]`)).pop()); const first_msg_id = _converse.connection.getUniqueId(); const last_msg_id = _converse.connection.getUniqueId(); let message = u.toStanza( ` 1st MAM Message `); _converse.connection._dataRecv(mock.createRequest(message)); message = u.toStanza( ` 2nd MAM Message `); _converse.connection._dataRecv(mock.createRequest(message)); const result = u.toStanza( ` ${first_msg_id} ${last_msg_id} 2 `); _converse.connection._dataRecv(mock.createRequest(result)); await u.waitUntil(() => view.model.messages.length === 2); const sent_stanzas = []; spyOn(_converse.connection, 'send').and.callFake(s => sent_stanzas.push(s?.nodeTree ?? s)); view.model.save({'hidden': true}); await u.waitUntil(() => sent_stanzas.length === 3); expect(Strophe.serialize(sent_stanzas[0])).toBe( ``+ ``+ `` ); expect(Strophe.serialize(sent_stanzas[1])).toBe( ``+ `0`+ ``+ `` ); expect(Strophe.serialize(sent_stanzas[2])).toBe( ``+ `0`+ ``+ ``+ `` ); view.model.save({'hidden': false}); done(); })); });