From 850c6aa2bd653d3a1838df3cd0236ad0a2bc4011 Mon Sep 17 00:00:00 2001 From: JC Brand Date: Fri, 16 Mar 2018 23:37:52 +0000 Subject: [PATCH] Fix more failing tests --- spec/chatbox.js | 5 ++-- spec/presence.js | 42 ++++++++++++++++++---------- spec/protocol.js | 35 ++++++++++------------- src/converse-rosterview.js | 1 - src/templates/chat_status_modal.html | 2 +- 5 files changed, 45 insertions(+), 40 deletions(-) diff --git a/spec/chatbox.js b/spec/chatbox.js index 45463004e..3f7883e09 100644 --- a/spec/chatbox.js +++ b/spec/chatbox.js @@ -365,9 +365,8 @@ test_utils.createContacts(_converse, 'current'); test_utils.openControlBox(); test_utils.waitUntil(function () { - return $(_converse.rosterview.el).find('.roster-group').length; - }, 300) - .then(function () { + return $(_converse.rosterview.el).find('.roster-group').length; + }, 300).then(function () { spyOn(_converse, 'emit'); spyOn(_converse.chatboxviews, 'trimChats'); _converse.chatboxes.browserStorage._clear(); diff --git a/spec/presence.js b/spec/presence.js index f48cea17b..9e7fd681c 100644 --- a/spec/presence.js +++ b/spec/presence.js @@ -13,6 +13,7 @@ var Strophe = converse.env.Strophe; var $iq = converse.env.$iq; var $pres = converse.env.$pres; + var u = converse.env.utils; // See: https://xmpp.org/rfcs/rfc3921.html describe("A sent presence stanza", function () { @@ -56,21 +57,34 @@ spyOn(view.model, 'sendPresence').and.callThrough(); spyOn(_converse.connection, 'send').and.callThrough(); - view.el.querySelector('a.change-xmpp-status-message').click(); - var msg = 'My custom status'; - view.el.querySelector('input.custom-xmpp-status').value = msg; - view.el.querySelector('[type="submit"]').click(); - expect(view.model.sendPresence).toHaveBeenCalled(); + var cbview = _converse.chatboxviews.get('controlbox'); + cbview.el.querySelector('.change-status').click() + var modal = _converse.xmppstatusview.status_modal; + test_utils.waitUntil(function () { + return u.isVisible(modal.el); + }, 1000).then(function () { + var msg = 'My custom status'; + modal.el.querySelector('input[name="status_message"]').value = msg; + modal.el.querySelector('[type="submit"]').click(); + expect(view.model.sendPresence).toHaveBeenCalled(); + expect(_converse.connection.send.calls.mostRecent().args[0].toLocaleString()) + .toBe("My custom status0") - expect(_converse.connection.send.calls.mostRecent().args[0].toLocaleString()) - .toBe("My custom status0") - - view.el.querySelector('a.choose-xmpp-status').click(); - view.el.querySelectorAll('.dropdown dd ul li a')[1].click(); // Change status to "dnd" - - expect(_converse.connection.send.calls.mostRecent().args[0].toLocaleString()) - .toBe("dndMy custom status0") - done(); + return test_utils.waitUntil(function () { + return modal.el.getAttribute('aria-hidden') === "true"; + }); + }).then(function () { + cbview.el.querySelector('.change-status').click() + return test_utils.waitUntil(function () { + return modal.el.getAttribute('aria-hidden') === "false"; + }, 1000); + }).then(function () { + modal.el.querySelector('label[for="radio-busy"]').click(); // Change status to "dnd" + modal.el.querySelector('[type="submit"]').click(); + expect(_converse.connection.send.calls.mostRecent().args[0].toLocaleString()) + .toBe("dndMy custom status0") + done(); + }); })); }); diff --git a/spec/protocol.js b/spec/protocol.js index 129184a3e..7e269d7d1 100644 --- a/spec/protocol.js +++ b/spec/protocol.js @@ -11,6 +11,7 @@ var $iq = converse.env.$iq; var $pres = converse.env.$pres; var _ = converse.env._; + var u = converse.env.utils; // See: // https://xmpp.org/rfcs/rfc3921.html @@ -54,7 +55,7 @@ { roster_groups: false }, function (done, _converse) { - var contact, sent_stanza, IQ_id, stanza; + var contact, sent_stanza, IQ_id, stanza, modal; test_utils.waitUntilDiscoConfirmed(_converse, 'localhost', [], ['vcard-temp']) .then(function () { return test_utils.waitUntil(function () { @@ -65,8 +66,8 @@ * the interaction between roster items and subscription states. */ test_utils.openControlBox(_converse); - var panel = _converse.chatboxviews.get('controlbox').contactspanel; - spyOn(panel, "addContactFromForm").and.callThrough(); + var cbview = _converse.chatboxviews.get('controlbox'); + spyOn(_converse.roster, "addAndSubscribe").and.callThrough(); spyOn(_converse.roster, "addContact").and.callThrough(); spyOn(_converse.roster, "sendContactAddIQ").and.callThrough(); @@ -77,21 +78,18 @@ sent_stanza = iq; IQ_id = sendIQ.bind(this)(iq, callback, errback); }); - panel.delegateEvents(); // Rebind all events so that our spy gets called - /* Add a new contact through the UI */ - var form = panel.el.querySelector('form.add-xmpp-contact'); - expect(_.isNull(form)).toBeTruthy(); - - // Click the "Add a contact" link. - panel.el.querySelector('.toggle-xmpp-contact-form').click(); - - // Check that the form appears - form = panel.el.querySelector('form.add-xmpp-contact'); - expect(form.parentElement.offsetHeight).not.toBe(0); - expect(_.includes(form.parentElement.classList, 'collapsed')).toBeFalsy(); + cbview.el.querySelector('.add-contact').click() + modal = _converse.rosterview.add_contact_modal; + return test_utils.waitUntil(function () { + return u.isVisible(modal.el); + }, 1000); + }).then(function () { + spyOn(modal, "addContactFromForm").and.callThrough(); + modal.delegateEvents(); // Fill in the form and submit + var form = modal.el.querySelector('form.add-xmpp-contact'); form.querySelector('input').value = 'contact@example.org'; form.querySelector('[type="submit"]').click(); @@ -100,15 +98,10 @@ * subscription, the user's client SHOULD perform a "roster set" * for the new roster item. */ - expect(panel.addContactFromForm).toHaveBeenCalled(); + expect(modal.addContactFromForm).toHaveBeenCalled(); expect(_converse.roster.addAndSubscribe).toHaveBeenCalled(); expect(_converse.roster.addContact).toHaveBeenCalled(); - // The form should not be visible anymore (by virtue of its - // parent being collapsed) - expect(form.parentElement.offsetHeight).toBe(0); - expect(_.includes(form.parentElement.classList, 'collapsed')).toBeTrue; - /* _converse request consists of sending an IQ * stanza of type='set' containing a element qualified by * the 'jabber:iq:roster' namespace, which in turn contains an diff --git a/src/converse-rosterview.js b/src/converse-rosterview.js index 46380ea6c..5d3f8a3d9 100644 --- a/src/converse-rosterview.js +++ b/src/converse-rosterview.js @@ -128,7 +128,6 @@ _converse.AddContactModal = _converse.BootstrapModal.extend({ events: { - 'click a.subscribe-to-user': 'addContactFromList', 'submit form': 'addContactFromForm', 'submit form.search-xmpp-contact': 'searchContacts' }, diff --git a/src/templates/chat_status_modal.html b/src/templates/chat_status_modal.html index 2aae5beba..25bbe9925 100644 --- a/src/templates/chat_status_modal.html +++ b/src/templates/chat_status_modal.html @@ -19,7 +19,7 @@
+ type="radio" id="radio-busy" value="dnd" name="chat_status" class="custom-control-input">