Commit 850c6aa2 authored by JC Brand's avatar JC Brand

Fix more failing tests

parent 56e28070
...@@ -365,9 +365,8 @@ ...@@ -365,9 +365,8 @@
test_utils.createContacts(_converse, 'current'); test_utils.createContacts(_converse, 'current');
test_utils.openControlBox(); test_utils.openControlBox();
test_utils.waitUntil(function () { test_utils.waitUntil(function () {
return $(_converse.rosterview.el).find('.roster-group').length; return $(_converse.rosterview.el).find('.roster-group').length;
}, 300) }, 300).then(function () {
.then(function () {
spyOn(_converse, 'emit'); spyOn(_converse, 'emit');
spyOn(_converse.chatboxviews, 'trimChats'); spyOn(_converse.chatboxviews, 'trimChats');
_converse.chatboxes.browserStorage._clear(); _converse.chatboxes.browserStorage._clear();
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
var Strophe = converse.env.Strophe; var Strophe = converse.env.Strophe;
var $iq = converse.env.$iq; var $iq = converse.env.$iq;
var $pres = converse.env.$pres; var $pres = converse.env.$pres;
var u = converse.env.utils;
// See: https://xmpp.org/rfcs/rfc3921.html // See: https://xmpp.org/rfcs/rfc3921.html
describe("A sent presence stanza", function () { describe("A sent presence stanza", function () {
...@@ -56,21 +57,34 @@ ...@@ -56,21 +57,34 @@
spyOn(view.model, 'sendPresence').and.callThrough(); spyOn(view.model, 'sendPresence').and.callThrough();
spyOn(_converse.connection, 'send').and.callThrough(); spyOn(_converse.connection, 'send').and.callThrough();
view.el.querySelector('a.change-xmpp-status-message').click(); var cbview = _converse.chatboxviews.get('controlbox');
var msg = 'My custom status'; cbview.el.querySelector('.change-status').click()
view.el.querySelector('input.custom-xmpp-status').value = msg; var modal = _converse.xmppstatusview.status_modal;
view.el.querySelector('[type="submit"]').click(); test_utils.waitUntil(function () {
expect(view.model.sendPresence).toHaveBeenCalled(); 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("<presence xmlns='jabber:client'><status>My custom status</status><priority>0</priority></presence>")
expect(_converse.connection.send.calls.mostRecent().args[0].toLocaleString()) return test_utils.waitUntil(function () {
.toBe("<presence xmlns='jabber:client'><status>My custom status</status><priority>0</priority></presence>") return modal.el.getAttribute('aria-hidden') === "true";
});
view.el.querySelector('a.choose-xmpp-status').click(); }).then(function () {
view.el.querySelectorAll('.dropdown dd ul li a')[1].click(); // Change status to "dnd" cbview.el.querySelector('.change-status').click()
return test_utils.waitUntil(function () {
expect(_converse.connection.send.calls.mostRecent().args[0].toLocaleString()) return modal.el.getAttribute('aria-hidden') === "false";
.toBe("<presence xmlns='jabber:client'><show>dnd</show><status>My custom status</status><priority>0</priority></presence>") }, 1000);
done(); }).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("<presence xmlns='jabber:client'><show>dnd</show><status>My custom status</status><priority>0</priority></presence>")
done();
});
})); }));
}); });
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
var $iq = converse.env.$iq; var $iq = converse.env.$iq;
var $pres = converse.env.$pres; var $pres = converse.env.$pres;
var _ = converse.env._; var _ = converse.env._;
var u = converse.env.utils;
// See: // See:
// https://xmpp.org/rfcs/rfc3921.html // https://xmpp.org/rfcs/rfc3921.html
...@@ -54,7 +55,7 @@ ...@@ -54,7 +55,7 @@
{ roster_groups: false }, { roster_groups: false },
function (done, _converse) { 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']) test_utils.waitUntilDiscoConfirmed(_converse, 'localhost', [], ['vcard-temp'])
.then(function () { .then(function () {
return test_utils.waitUntil(function () { return test_utils.waitUntil(function () {
...@@ -65,8 +66,8 @@ ...@@ -65,8 +66,8 @@
* the interaction between roster items and subscription states. * the interaction between roster items and subscription states.
*/ */
test_utils.openControlBox(_converse); test_utils.openControlBox(_converse);
var panel = _converse.chatboxviews.get('controlbox').contactspanel; var cbview = _converse.chatboxviews.get('controlbox');
spyOn(panel, "addContactFromForm").and.callThrough();
spyOn(_converse.roster, "addAndSubscribe").and.callThrough(); spyOn(_converse.roster, "addAndSubscribe").and.callThrough();
spyOn(_converse.roster, "addContact").and.callThrough(); spyOn(_converse.roster, "addContact").and.callThrough();
spyOn(_converse.roster, "sendContactAddIQ").and.callThrough(); spyOn(_converse.roster, "sendContactAddIQ").and.callThrough();
...@@ -77,21 +78,18 @@ ...@@ -77,21 +78,18 @@
sent_stanza = iq; sent_stanza = iq;
IQ_id = sendIQ.bind(this)(iq, callback, errback); 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 cbview.el.querySelector('.add-contact').click()
form = panel.el.querySelector('form.add-xmpp-contact'); modal = _converse.rosterview.add_contact_modal;
expect(form.parentElement.offsetHeight).not.toBe(0); return test_utils.waitUntil(function () {
expect(_.includes(form.parentElement.classList, 'collapsed')).toBeFalsy(); return u.isVisible(modal.el);
}, 1000);
}).then(function () {
spyOn(modal, "addContactFromForm").and.callThrough();
modal.delegateEvents();
// Fill in the form and submit // Fill in the form and submit
var form = modal.el.querySelector('form.add-xmpp-contact');
form.querySelector('input').value = 'contact@example.org'; form.querySelector('input').value = 'contact@example.org';
form.querySelector('[type="submit"]').click(); form.querySelector('[type="submit"]').click();
...@@ -100,15 +98,10 @@ ...@@ -100,15 +98,10 @@
* subscription, the user's client SHOULD perform a "roster set" * subscription, the user's client SHOULD perform a "roster set"
* for the new roster item. * for the new roster item.
*/ */
expect(panel.addContactFromForm).toHaveBeenCalled(); expect(modal.addContactFromForm).toHaveBeenCalled();
expect(_converse.roster.addAndSubscribe).toHaveBeenCalled(); expect(_converse.roster.addAndSubscribe).toHaveBeenCalled();
expect(_converse.roster.addContact).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 /* _converse request consists of sending an IQ
* stanza of type='set' containing a <query/> element qualified by * stanza of type='set' containing a <query/> element qualified by
* the 'jabber:iq:roster' namespace, which in turn contains an * the 'jabber:iq:roster' namespace, which in turn contains an
......
...@@ -128,7 +128,6 @@ ...@@ -128,7 +128,6 @@
_converse.AddContactModal = _converse.BootstrapModal.extend({ _converse.AddContactModal = _converse.BootstrapModal.extend({
events: { events: {
'click a.subscribe-to-user': 'addContactFromList',
'submit form': 'addContactFromForm', 'submit form': 'addContactFromForm',
'submit form.search-xmpp-contact': 'searchContacts' 'submit form.search-xmpp-contact': 'searchContacts'
}, },
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
</div> </div>
<div class="custom-control custom-radio"> <div class="custom-control custom-radio">
<input {[ if (o.status === 'busy') { ]} checked="checked" {[ } ]} <input {[ if (o.status === 'busy') { ]} checked="checked" {[ } ]}
type="radio" id="radio-busy" value="busy" name="chat_status" class="custom-control-input"> type="radio" id="radio-busy" value="dnd" name="chat_status" class="custom-control-input">
<label class="custom-control-label" for="radio-busy"> <label class="custom-control-label" for="radio-busy">
<span class="fa fa-minus-circle"></span>&nbsp;{{{o.label_busy}}}</label> <span class="fa fa-minus-circle"></span>&nbsp;{{{o.label_busy}}}</label>
</div> </div>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment