Commit cc98cea0 authored by JC Brand's avatar JC Brand

Fix failing tests by waiting appropriately

parent 9a60b5bb
......@@ -78646,7 +78646,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
if (_converse.allow_muc_invitations) {
const registerDirectInvitationHandler = function registerDirectInvitationHandler() {
_converse.connection.addHandler(function (message) {
_converse.connection.addHandler(message => {
_converse.onDirectMUCInvitation(message);
return true;
......@@ -428,6 +428,8 @@
* </iq>
*/
expect(_converse.bookmarks.models.length).toBe(0);
spyOn(_converse.bookmarks, 'onBookmarksReceived').and.callThrough();
var stanza = $iq({'to': _converse.connection.jid, 'type':'result', 'id':IQ_id})
.c('pubsub', {'xmlns': Strophe.NS.PUBSUB})
.c('items', {'node': 'storage:bookmarks'})
......@@ -444,11 +446,13 @@
'jid': 'another@conference.shakespeare.lit'
}); // Purposefully exclude the <nick> element to test #1043
_converse.connection._dataRecv(test_utils.createRequest(stanza));
return test_utils.waitUntil(() => _converse.bookmarks.onBookmarksReceived.calls.count(), 300)
}).then(() => {
expect(_converse.bookmarks.models.length).toBe(2);
expect(_converse.bookmarks.findWhere({'jid': 'theplay@conference.shakespeare.lit'}).get('autojoin')).toBe(true);
expect(_converse.bookmarks.findWhere({'jid': 'another@conference.shakespeare.lit'}).get('autojoin')).toBe(false);
done();
});
}).catch(_.partial(console.error, _));
}));
describe("The rooms panel", function () {
......
......@@ -1800,6 +1800,8 @@
"<query xmlns='http://jabber.org/protocol/disco#info'/>"+
"</iq>");
var view = _converse.chatboxviews.get('coven@chat.shakespeare.lit');
spyOn(view.model, 'parseRoomFeatures').and.callThrough();
/* <iq from='coven@chat.shakespeare.lit'
* id='ik3vs715'
* to='hag66@shakespeare.lit/pda'
......@@ -1839,8 +1841,8 @@
.c('feature', {'var': 'muc_unmoderated'}).up()
.c('feature', {'var': 'muc_nonanonymous'});
_converse.connection._dataRecv(test_utils.createRequest(features_stanza));
var view = _converse.chatboxviews.get('coven@chat.shakespeare.lit');
test_utils.waitUntil(() => view.model.parseRoomFeatures.calls.count(), 300)
.then(() => {
expect(view.model.get('features_fetched')).toBeTruthy();
expect(view.model.get('passwordprotected')).toBe(true);
expect(view.model.get('hidden')).toBe(true);
......@@ -1849,6 +1851,7 @@
expect(view.model.get('unmoderated')).toBe(true);
expect(view.model.get('nonanonymous')).toBe(true);
done();
});
}));
it("updates the shown features when the room configuration has changed",
......@@ -2946,6 +2949,7 @@
function (done, _converse) {
var sent_IQs = [], IQ_ids = [];
var invitee_jid, sent_stanza, sent_id;
var sendIQ = _converse.connection.sendIQ;
spyOn(_converse.connection, 'sendIQ').and.callFake(function (iq, callback, errback) {
sent_IQs.push(iq);
......@@ -2954,6 +2958,9 @@
_converse.api.rooms.open('coven@chat.shakespeare.lit', {'nick': 'dummy'});
var view = _converse.chatboxviews.get('coven@chat.shakespeare.lit');
spyOn(view.model, 'parseRoomFeatures').and.callThrough();
// State that the chat is members-only via the features IQ
var features_stanza = $iq({
from: 'coven@chat.shakespeare.lit',
......@@ -2973,12 +2980,12 @@
.c('feature', {'var': 'muc_membersonly'}).up();
_converse.connection._dataRecv(test_utils.createRequest(features_stanza));
var view = _converse.chatboxviews.get('coven@chat.shakespeare.lit');
test_utils.waitUntil(() => view.model.parseRoomFeatures.calls.count(), 300)
.then(() => {
expect(view.model.get('membersonly')).toBeTruthy();
test_utils.createContacts(_converse, 'current');
var sent_stanza, sent_id;
spyOn(_converse.connection, 'send').and.callFake(function (stanza) {
if (stanza.nodeTree && stanza.nodeTree.nodeName === 'message') {
sent_id = stanza.nodeTree.getAttribute('id');
......@@ -2986,7 +2993,7 @@
}
});
var name = mock.cur_names[0];
var invitee_jid = name.replace(/ /g,'.').toLowerCase() + '@localhost';
invitee_jid = name.replace(/ /g,'.').toLowerCase() + '@localhost';
var reason = "Please join this chat room";
view.model.directInvite(invitee_jid, reason);
......@@ -3067,10 +3074,8 @@
'jid': 'crone1@shakespeare.lit',
});
_converse.connection._dataRecv(test_utils.createRequest(owner_list_stanza));
test_utils.waitUntil(function () {
return IQ_ids.length;
}, 300).then(function () {
return test_utils.waitUntil(() => IQ_ids.length, 300);
}).then(() => {
// Check that the member list now gets updated
var iq = "<iq to='coven@chat.shakespeare.lit' type='set' xmlns='jabber:client' id='"+IQ_ids.pop()+"'>"+
"<query xmlns='http://jabber.org/protocol/muc#admin'>"+
......@@ -3079,10 +3084,8 @@
"</item>"+
"</query>"+
"</iq>";
test_utils.waitUntil(function () {
return _.includes(_.invokeMap(sent_IQs, Object.prototype.toLocaleString), iq);
}, 300).then(function () {
return test_utils.waitUntil(() => _.includes(_.invokeMap(sent_IQs, Object.prototype.toLocaleString), iq), 300);
}).then(() => {
// Finally check that the user gets invited.
expect(sent_stanza.toLocaleString()).toBe( // Strophe adds the xmlns attr (although not in spec)
"<message from='dummy@localhost/resource' to='"+invitee_jid+"' id='"+sent_id+"' xmlns='jabber:client'>"+
......@@ -3091,7 +3094,6 @@
);
done();
});
});
}));
});
......
......@@ -403,6 +403,7 @@
};
if (reason !== null) { attrs.reason = reason; }
if (this.get('password')) { attrs.password = this.get('password'); }
const invitation = $msg({
from: _converse.connection.jid,
to: recipient,
......@@ -1126,7 +1127,7 @@
if (_converse.allow_muc_invitations) {
const registerDirectInvitationHandler = function () {
_converse.connection.addHandler(
function (message) {
(message) => {
_converse.onDirectMUCInvitation(message);
return true;
}, 'jabber:x:conference', 'message');
......
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