component.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /*global mock, converse */
  2. const u = converse.env.utils;
  3. describe("The <converse-muc> component", function () {
  4. it("can be rendered as a standalone component",
  5. mock.initConverse([], {'auto_insert': false}, async function (_converse) {
  6. const { api } = _converse;
  7. const muc_jid = 'lounge@montague.lit';
  8. const nick = 'romeo';
  9. const muc_creation_promise = await api.rooms.open(muc_jid, {nick, 'hidden': true}, false);
  10. await mock.getRoomFeatures(_converse, muc_jid, []);
  11. await mock.receiveOwnMUCPresence(_converse, muc_jid, nick);
  12. await muc_creation_promise;
  13. const model = _converse.chatboxes.get(muc_jid);
  14. await u.waitUntil(() => (model.session.get('connection_status') === converse.ROOMSTATUS.ENTERED));
  15. const span_el = document.createElement('span');
  16. span_el.classList.add('conversejs');
  17. span_el.classList.add('converse-embedded');
  18. const muc_el = document.createElement('converse-muc');
  19. muc_el.classList.add('chatbox');
  20. muc_el.classList.add('chatroom');
  21. muc_el.setAttribute('jid', muc_jid);
  22. span_el.appendChild(muc_el);
  23. const body = document.querySelector('body');
  24. body.appendChild(span_el);
  25. await u.waitUntil(() => muc_el.querySelector('converse-muc-bottom-panel'));
  26. body.removeChild(span_el);
  27. expect(true).toBe(true);
  28. }));
  29. it("will update correctly when the jid property changes",
  30. mock.initConverse([], {'auto_insert': false}, async function (_converse) {
  31. const { api } = _converse;
  32. const muc_jid = 'lounge@montague.lit';
  33. const nick = 'romeo';
  34. const muc_creation_promise = api.rooms.open(muc_jid, {nick, 'hidden': true}, false);
  35. await mock.getRoomFeatures(_converse, muc_jid, []);
  36. await mock.receiveOwnMUCPresence(_converse, muc_jid, nick);
  37. await muc_creation_promise;
  38. const model = _converse.chatboxes.get(muc_jid);
  39. await u.waitUntil(() => (model.session.get('connection_status') === converse.ROOMSTATUS.ENTERED));
  40. const affs = api.settings.get('muc_fetch_members');
  41. const all_affiliations = Array.isArray(affs) ? affs : (affs ? ['member', 'admin', 'owner'] : []);
  42. await mock.returnMemberLists(_converse, muc_jid, [], all_affiliations);
  43. await model.messages.fetched;
  44. model.sendMessage({'body': 'hello from the lounge!'});
  45. const span_el = document.createElement('span');
  46. span_el.classList.add('conversejs');
  47. span_el.classList.add('converse-embedded');
  48. const muc_el = document.createElement('converse-muc');
  49. muc_el.classList.add('chatbox');
  50. muc_el.classList.add('chatroom');
  51. muc_el.setAttribute('jid', muc_jid);
  52. span_el.appendChild(muc_el);
  53. const body = document.querySelector('body');
  54. body.appendChild(span_el);
  55. await u.waitUntil(() => muc_el.querySelector('converse-muc-bottom-panel'));
  56. muc_el.querySelector('.box-flyout').setAttribute('style', 'height: 80vh');
  57. const message = await u.waitUntil(() => muc_el.querySelector('converse-chat-message'));
  58. expect(message.model.get('body')).toBe('hello from the lounge!');
  59. _converse.connection.sent_stanzas = [];
  60. const muc2_jid = 'bar@montague.lit';
  61. const muc2_creation_promise = api.rooms.open(muc2_jid, {nick, 'hidden': true}, false);
  62. await mock.getRoomFeatures(_converse, muc2_jid, []);
  63. await mock.receiveOwnMUCPresence(_converse, muc2_jid, nick);
  64. await muc2_creation_promise;
  65. const model2 = _converse.chatboxes.get(muc2_jid);
  66. await u.waitUntil(() => (model.session.get('connection_status') === converse.ROOMSTATUS.ENTERED));
  67. await mock.returnMemberLists(_converse, muc2_jid, [], all_affiliations);
  68. await model.messages.fetched;
  69. model2.sendMessage({'body': 'hello from the bar!'});
  70. muc_el.setAttribute('jid', muc2_jid);
  71. await u.waitUntil(() => muc_el.querySelector('converse-chat-message-body').textContent.trim() === 'hello from the bar!');
  72. body.removeChild(span_el);
  73. }));
  74. });