/*global mock */ const u = converse.env.utils; describe("A XEP-0317 MUC Hat", function () { it("can be included in a presence stanza", mock.initConverse( ['rosterGroupsFetched', 'chatBoxesFetched'], {}, async function (done, _converse) { const muc_jid = 'lounge@montague.lit'; await mock.openAndEnterChatRoom(_converse, muc_jid, 'romeo'); const view = _converse.chatboxviews.get(muc_jid); const hat1_id = u.getUniqueId(); const hat2_id = u.getUniqueId(); _converse.connection._dataRecv(mock.createRequest(u.toStanza(` `))); await u.waitUntil(() => view.el.querySelector('.chat-content__notifications').textContent.trim() === "romeo and Terry have entered the groupchat"); let hats = view.model.getOccupant("Terry").get('hats'); expect(hats.length).toBe(2); expect(hats.map(h => h.title).join(' ')).toBe("Teacher's Assistant Dark Mage"); _converse.connection._dataRecv(mock.createRequest(u.toStanza(` Hello world `))); const msg_el = await u.waitUntil(() => view.el.querySelector('.chat-msg')); let badges = Array.from(msg_el.querySelectorAll('.badge')); expect(badges.length).toBe(2); expect(badges.map(b => b.textContent.trim()).join(' ' )).toBe("Teacher's Assistant Dark Mage"); const hat3_id = u.getUniqueId(); _converse.connection._dataRecv(mock.createRequest(u.toStanza(` `))); await u.waitUntil(() => view.model.getOccupant("Terry").get('hats').length === 3); hats = view.model.getOccupant("Terry").get('hats'); expect(hats.map(h => h.title).join(' ')).toBe("Teacher's Assistant Dark Mage Mad hatter"); await u.waitUntil(() => view.el.querySelectorAll('.chat-msg .badge').length === 3, 1000); badges = Array.from(view.el.querySelectorAll('.chat-msg .badge')); expect(badges.map(b => b.textContent.trim()).join(' ' )).toBe("Teacher's Assistant Dark Mage Mad hatter"); _converse.connection._dataRecv(mock.createRequest(u.toStanza(` `))); await u.waitUntil(() => view.model.getOccupant("Terry").get('hats').length === 0); await u.waitUntil(() => view.el.querySelectorAll('.chat-msg .badge').length === 0); done(); })); })