diff --git a/spec/bookmarks.js b/spec/bookmarks.js
index 68a7e693c..43bcd6965 100644
--- a/spec/bookmarks.js
+++ b/spec/bookmarks.js
@@ -12,6 +12,7 @@
} (this, function (jasmine, $, converse, utils, mock, test_utils) {
"use strict";
var $iq = converse.env.$iq,
+ Backbone = converse.env.Backbone,
Strophe = converse.env.Strophe,
_ = converse.env._,
u = converse.env.utils;
@@ -20,7 +21,7 @@
it("can be bookmarked", mock.initConverseWithPromises(
null, ['rosterGroupsFetched'], {}, function (done, _converse) {
-
+
var sent_stanza, IQ_id;
var sendIQ = _converse.connection.sendIQ;
spyOn(_converse.connection, 'sendIQ').and.callFake(function (iq, callback, errback) {
@@ -30,105 +31,110 @@
spyOn(_converse.connection, 'getUniqueId').and.callThrough();
test_utils.openChatRoom(_converse, 'theplay', 'conference.shakespeare.lit', 'JC');
+
var jid = 'theplay@conference.shakespeare.lit';
var view = _converse.chatboxviews.get(jid);
spyOn(view, 'renderBookmarkForm').and.callThrough();
spyOn(view, 'closeForm').and.callThrough();
- var $bookmark = $(view.el).find('.icon-pushpin');
- $bookmark[0].click();
- expect(view.renderBookmarkForm).toHaveBeenCalled();
+ test_utils.waitUntil(function () {
+ return !_.isNull(view.el.querySelector('.toggle-bookmark'));
+ }, 300).then(function () {
+ var $bookmark = $(view.el).find('.icon-pushpin');
+ $bookmark[0].click();
+ expect(view.renderBookmarkForm).toHaveBeenCalled();
- view.el.querySelector('.button-cancel').click();
- expect(view.closeForm).toHaveBeenCalled();
- expect($bookmark.hasClass('on-button'), false);
+ view.el.querySelector('.button-cancel').click();
+ expect(view.closeForm).toHaveBeenCalled();
+ expect($bookmark.hasClass('on-button'), false);
- $bookmark[0].click();
- expect(view.renderBookmarkForm).toHaveBeenCalled();
+ $bookmark[0].click();
+ expect(view.renderBookmarkForm).toHaveBeenCalled();
- /* Client uploads data:
- * --------------------
- *
- *
- *
- * -
- *
- *
- * JC
- *
- *
- *
- *
- *
- *
- *
- * http://jabber.org/protocol/pubsub#publish-options
- *
- *
- * true
- *
- *
- * whitelist
- *
- *
- *
- *
- *
- */
- expect(view.model.get('bookmarked')).toBeFalsy();
- var $form = $(view.el).find('.chatroom-form');
- $form.find('input[name="name"]').val('Play's the Thing');
- $form.find('input[name="autojoin"]').prop('checked', true);
- $form.find('input[name="nick"]').val('JC');
- view.el.querySelector('.button-primary').click();
+ /* Client uploads data:
+ * --------------------
+ *
+ *
+ *
+ * -
+ *
+ *
+ * JC
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * http://jabber.org/protocol/pubsub#publish-options
+ *
+ *
+ * true
+ *
+ *
+ * whitelist
+ *
+ *
+ *
+ *
+ *
+ */
+ expect(view.model.get('bookmarked')).toBeFalsy();
+ var $form = $(view.el).find('.chatroom-form');
+ $form.find('input[name="name"]').val('Play's the Thing');
+ $form.find('input[name="autojoin"]').prop('checked', true);
+ $form.find('input[name="nick"]').val('JC');
+ view.el.querySelector('.button-primary').click();
- expect(view.model.get('bookmarked')).toBeTruthy();
- expect($bookmark.hasClass('on-button'), true);
+ expect(view.model.get('bookmarked')).toBeTruthy();
+ expect($bookmark.hasClass('on-button'), true);
- expect(sent_stanza.toLocaleString()).toBe(
- ""+
- ""+
- ""+
- "- "+
- ""+
- ""+
- "JC"+
- ""+
- ""+
- "
"+
- ""+
- ""+
- ""+
- ""+
- "http://jabber.org/protocol/pubsub#publish-options"+
- ""+
- ""+
- "true"+
- ""+
- ""+
- "whitelist"+
- ""+
- ""+
- ""+
- ""+
- ""
- );
+ expect(sent_stanza.toLocaleString()).toBe(
+ ""+
+ ""+
+ ""+
+ "- "+
+ ""+
+ ""+
+ "JC"+
+ ""+
+ ""+
+ "
"+
+ ""+
+ ""+
+ ""+
+ ""+
+ "http://jabber.org/protocol/pubsub#publish-options"+
+ ""+
+ ""+
+ "true"+
+ ""+
+ ""+
+ "whitelist"+
+ ""+
+ ""+
+ ""+
+ ""+
+ ""
+ );
- /* Server acknowledges successful storage
- *
- *
- */
- var stanza = $iq({
- 'to':_converse.connection.jid,
- 'type':'result',
- 'id':IQ_id
+ /* Server acknowledges successful storage
+ *
+ *
+ */
+ var stanza = $iq({
+ 'to':_converse.connection.jid,
+ 'type':'result',
+ 'id':IQ_id
+ });
+ _converse.connection._dataRecv(test_utils.createRequest(stanza));
+ // We ignore this IQ stanza... (unless it's an error stanza), so
+ // nothing to test for here.
+ done();
});
- _converse.connection._dataRecv(test_utils.createRequest(stanza));
- // We ignore this IQ stanza... (unless it's an error stanza), so
- // nothing to test for here.
- done();
}));
it("will be automatically opened if 'autojoin' is set on the bookmark", mock.initConverseWithPromises(
@@ -161,13 +167,18 @@
test_utils.openChatRoom(_converse, 'lounge', 'localhost', 'dummy');
var view = _converse.chatboxviews.get('lounge@localhost');
- var $bookmark_icon = $(view.el.querySelector('.icon-pushpin'));
- expect($bookmark_icon.hasClass('button-on')).toBeFalsy();
- view.model.set('bookmarked', true);
- expect($bookmark_icon.hasClass('button-on')).toBeTruthy();
- view.model.set('bookmarked', false);
- expect($bookmark_icon.hasClass('button-on')).toBeFalsy();
- done();
+
+ test_utils.waitUntil(function () {
+ return !_.isNull(view.el.querySelector('.toggle-bookmark'));
+ }, 300).then(function () {
+ var bookmark_icon = view.el.querySelector('.icon-pushpin');
+ expect(_.includes(bookmark_icon.classList, 'button-on')).toBeFalsy();
+ view.model.set('bookmarked', true);
+ expect(_.includes(bookmark_icon.classList, 'button-on')).toBeTruthy();
+ view.model.set('bookmarked', false);
+ expect(_.includes(bookmark_icon.classList, 'button-on')).toBeFalsy();
+ done();
+ });
}));
it("can be unbookmarked", mock.initConverseWithPromises(
@@ -175,61 +186,68 @@
var sent_stanza, IQ_id;
var sendIQ = _converse.connection.sendIQ;
+
test_utils.openChatRoom(_converse, 'theplay', 'conference.shakespeare.lit', 'JC');
var jid = 'theplay@conference.shakespeare.lit';
var view = _converse.chatboxviews.get(jid);
- spyOn(view, 'toggleBookmark').and.callThrough();
- spyOn(_converse.bookmarks, 'sendBookmarkStanza').and.callThrough();
- view.delegateEvents();
- _converse.bookmarks.create({
- 'jid': view.model.get('jid'),
- 'autojoin': false,
- 'name': 'The Play',
- 'nick': ' Othello'
- });
- expect(_converse.bookmarks.length).toBe(1);
- expect(view.model.get('bookmarked')).toBeTruthy();
- var $bookmark_icon = $(view.el.querySelector('.icon-pushpin'));
- expect($bookmark_icon.hasClass('button-on')).toBeTruthy();
- spyOn(_converse.connection, 'sendIQ').and.callFake(function (iq, callback, errback) {
- sent_stanza = iq;
- IQ_id = sendIQ.bind(this)(iq, callback, errback);
- });
- spyOn(_converse.connection, 'getUniqueId').and.callThrough();
- $bookmark_icon[0].click();
- expect(view.toggleBookmark).toHaveBeenCalled();
- expect($bookmark_icon.hasClass('button-on')).toBeFalsy();
- expect(_converse.bookmarks.length).toBe(0);
+ test_utils.waitUntil(function () {
+ return !_.isNull(view.el.querySelector('.toggle-bookmark'));
+ }, 300).then(function () {
+ spyOn(view, 'toggleBookmark').and.callThrough();
+ spyOn(_converse.bookmarks, 'sendBookmarkStanza').and.callThrough();
+ view.delegateEvents();
- // Check that an IQ stanza is sent out, containing no
- // conferences to bookmark (since we removed the one and
- // only bookmark).
- expect(sent_stanza.toLocaleString()).toBe(
- ""+
- ""+
- ""+
- "- "+
- ""+
- "
"+
- ""+
- ""+
- ""+
- ""+
- "http://jabber.org/protocol/pubsub#publish-options"+
- ""+
- ""+
- "true"+
- ""+
- ""+
- "whitelist"+
- ""+
- ""+
- ""+
- ""+
- ""
- );
- done();
+ _converse.bookmarks.create({
+ 'jid': view.model.get('jid'),
+ 'autojoin': false,
+ 'name': 'The Play',
+ 'nick': ' Othello'
+ });
+ expect(_converse.bookmarks.length).toBe(1);
+ expect(view.model.get('bookmarked')).toBeTruthy();
+ var $bookmark_icon = $(view.el.querySelector('.icon-pushpin'));
+ expect($bookmark_icon.hasClass('button-on')).toBeTruthy();
+
+ spyOn(_converse.connection, 'sendIQ').and.callFake(function (iq, callback, errback) {
+ sent_stanza = iq;
+ IQ_id = sendIQ.bind(this)(iq, callback, errback);
+ });
+ spyOn(_converse.connection, 'getUniqueId').and.callThrough();
+ $bookmark_icon[0].click();
+ expect(view.toggleBookmark).toHaveBeenCalled();
+ expect($bookmark_icon.hasClass('button-on')).toBeFalsy();
+ expect(_converse.bookmarks.length).toBe(0);
+
+ // Check that an IQ stanza is sent out, containing no
+ // conferences to bookmark (since we removed the one and
+ // only bookmark).
+ expect(sent_stanza.toLocaleString()).toBe(
+ ""+
+ ""+
+ ""+
+ "- "+
+ ""+
+ "
"+
+ ""+
+ ""+
+ ""+
+ ""+
+ "http://jabber.org/protocol/pubsub#publish-options"+
+ ""+
+ ""+
+ "true"+
+ ""+
+ ""+
+ "whitelist"+
+ ""+
+ ""+
+ ""+
+ ""+
+ ""
+ );
+ done();
+ });
}));
});
@@ -308,88 +326,21 @@
}));
it("can be retrieved from the XMPP server", mock.initConverseWithPromises(
- ['send'], ['rosterGroupsFetched'], {}, function (done, _converse) {
+ ['send'], ['chatBoxesFetched', 'roomsPanelRendered', 'rosterGroupsFetched'], {},
+ function (done, _converse) {
- /* Client requests all items
- * -------------------------
- *
- *
- *
- *
- *
- *
- */
- var IQ_id;
- expect(_.filter(_converse.connection.send.calls.all(), function (call) {
- var stanza = call.args[0];
- if (!(stanza instanceof Element) || stanza.nodeName !== 'iq') {
- return;
- }
- // XXX: Wrapping in a div is a workaround for PhantomJS
- var div = document.createElement('div');
- div.appendChild(stanza);
- if (div.innerHTML ===
- ''+
- ''+
- ''+
- ''+
- '') {
- IQ_id = stanza.getAttribute('id');
- return true;
- }
- }).length).toBe(1);
-
- /*
- * Server returns all items
- * ------------------------
- *
- *
- *
- * -
- *
- *
- * JC
- *
- *
- *
- *
- *
- *
- */
- expect(_converse.bookmarks.models.length).toBe(0);
- var stanza = $iq({'to': _converse.connection.jid, 'type':'result', 'id':IQ_id})
- .c('pubsub', {'xmlns': Strophe.NS.PUBSUB})
- .c('items', {'node': 'storage:bookmarks'})
- .c('item', {'id': 'current'})
- .c('storage', {'xmlns': 'storage:bookmarks'})
- .c('conference', {
- 'name': 'The Play's the Thing',
- 'autojoin': 'true',
- 'jid': 'theplay@conference.shakespeare.lit'
- }).c('nick').t('JC').up().up()
- .c('conference', {
- 'name': 'Another room',
- 'autojoin': 'false',
- 'jid': 'another@conference.shakespeare.lit'
- }).c('nick').t('JC').up().up();
- _converse.connection._dataRecv(test_utils.createRequest(stanza));
- 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();
- }));
-
- describe("The rooms panel", function () {
-
- it("shows a list of bookmarks", mock.initConverseWithPromises(
- ['send'], ['rosterGroupsFetched'], {}, function (done, _converse) {
-
- test_utils.openControlBox().openRoomsPanel(_converse);
+ test_utils.waitUntil(function () {
+ return _converse.bookmarks;
+ }, 300).then(function () {
+ /* Client requests all items
+ * -------------------------
+ *
+ *
+ *
+ *
+ *
+ *
+ */
var IQ_id;
expect(_.filter(_converse.connection.send.calls.all(), function (call) {
var stanza = call.args[0];
@@ -411,6 +362,28 @@
}
}).length).toBe(1);
+ /*
+ * Server returns all items
+ * ------------------------
+ *
+ *
+ *
+ * -
+ *
+ *
+ * JC
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+ expect(_converse.bookmarks.models.length).toBe(0);
var stanza = $iq({'to': _converse.connection.jid, 'type':'result', 'id':IQ_id})
.c('pubsub', {'xmlns': Strophe.NS.PUBSUB})
.c('items', {'node': 'storage:bookmarks'})
@@ -418,97 +391,156 @@
.c('storage', {'xmlns': 'storage:bookmarks'})
.c('conference', {
'name': 'The Play's the Thing',
- 'autojoin': 'false',
+ 'autojoin': 'true',
'jid': 'theplay@conference.shakespeare.lit'
}).c('nick').t('JC').up().up()
- .c('conference', {
- 'name': '1st Bookmark',
- 'autojoin': 'false',
- 'jid': 'first@conference.shakespeare.lit'
- }).c('nick').t('JC').up().up()
- .c('conference', {
- 'name': 'Bookmark with a very very long name that will be shortened',
- 'autojoin': 'false',
- 'jid': 'longname@conference.shakespeare.lit'
- }).c('nick').t('JC').up().up()
.c('conference', {
'name': 'Another room',
'autojoin': 'false',
'jid': 'another@conference.shakespeare.lit'
}).c('nick').t('JC').up().up();
_converse.connection._dataRecv(test_utils.createRequest(stanza));
+ 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();
+ });
+ }));
+
+ describe("The rooms panel", function () {
+
+ it("shows a list of bookmarks", mock.initConverseWithPromises(
+ ['send'], ['rosterGroupsFetched'], {}, function (done, _converse) {
test_utils.waitUntil(function () {
- return $('#chatrooms dl.bookmarks dd').length;
+ return _converse.bookmarks;
}, 300).then(function () {
- expect($('#chatrooms dl.bookmarks dd').length).toBe(4);
- expect($('#chatrooms dl.bookmarks dd a').text().trim()).toBe(
- "1st Bookmark Another room Bookmark with a very very long name that will be shortened The Play's the Thing")
- spyOn(window, 'confirm').and.returnValue(true);
- $('#chatrooms dl.bookmarks dd:nth-child(2) a:nth-child(2)')[0].click();
- expect(window.confirm).toHaveBeenCalled();
+ test_utils.openControlBox().openRoomsPanel(_converse);
+ var IQ_id;
+ expect(_.filter(_converse.connection.send.calls.all(), function (call) {
+ var stanza = call.args[0];
+ if (!(stanza instanceof Element) || stanza.nodeName !== 'iq') {
+ return;
+ }
+ // XXX: Wrapping in a div is a workaround for PhantomJS
+ var div = document.createElement('div');
+ div.appendChild(stanza);
+ if (div.innerHTML ===
+ ''+
+ ''+
+ ''+
+ ''+
+ '') {
+ IQ_id = stanza.getAttribute('id');
+ return true;
+ }
+ }).length).toBe(1);
- return test_utils.waitUntil(function () {
- return $('#chatrooms dl.bookmarks dd a').text().trim() ===
- "1st Bookmark Bookmark with a very very long name that will be shortened The Play's the Thing";
- }, 300)
- }).then(done);
+ var stanza = $iq({'to': _converse.connection.jid, 'type':'result', 'id':IQ_id})
+ .c('pubsub', {'xmlns': Strophe.NS.PUBSUB})
+ .c('items', {'node': 'storage:bookmarks'})
+ .c('item', {'id': 'current'})
+ .c('storage', {'xmlns': 'storage:bookmarks'})
+ .c('conference', {
+ 'name': 'The Play's the Thing',
+ 'autojoin': 'false',
+ 'jid': 'theplay@conference.shakespeare.lit'
+ }).c('nick').t('JC').up().up()
+ .c('conference', {
+ 'name': '1st Bookmark',
+ 'autojoin': 'false',
+ 'jid': 'first@conference.shakespeare.lit'
+ }).c('nick').t('JC').up().up()
+ .c('conference', {
+ 'name': 'Bookmark with a very very long name that will be shortened',
+ 'autojoin': 'false',
+ 'jid': 'longname@conference.shakespeare.lit'
+ }).c('nick').t('JC').up().up()
+ .c('conference', {
+ 'name': 'Another room',
+ 'autojoin': 'false',
+ 'jid': 'another@conference.shakespeare.lit'
+ }).c('nick').t('JC').up().up();
+ _converse.connection._dataRecv(test_utils.createRequest(stanza));
+
+ test_utils.waitUntil(function () {
+ return $('#chatrooms dl.bookmarks dd').length;
+ }, 300).then(function () {
+ expect($('#chatrooms dl.bookmarks dd').length).toBe(4);
+ expect($('#chatrooms dl.bookmarks dd a').text().trim()).toBe(
+ "1st Bookmark Another room Bookmark with a very very long name that will be shortened The Play's the Thing")
+
+ spyOn(window, 'confirm').and.returnValue(true);
+ $('#chatrooms dl.bookmarks dd:nth-child(2) a:nth-child(2)')[0].click();
+ expect(window.confirm).toHaveBeenCalled();
+
+ return test_utils.waitUntil(function () {
+ return $('#chatrooms dl.bookmarks dd a').text().trim() ===
+ "1st Bookmark Bookmark with a very very long name that will be shortened The Play's the Thing";
+ }, 300)
+ }).then(done);
+ });
}));
it("remembers the toggle state of the bookmarks list", mock.initConverseWithPromises(
['send'], ['rosterGroupsFetched'], {}, function (done, _converse) {
- var IQ_id;
- expect(_.filter(_converse.connection.send.calls.all(), function (call) {
- var stanza = call.args[0];
- if (!(stanza instanceof Element) || stanza.nodeName !== 'iq') {
- return;
- }
- // XXX: Wrapping in a div is a workaround for PhantomJS
- var div = document.createElement('div');
- div.appendChild(stanza);
- if (div.innerHTML ===
- ''+
- ''+
- ''+
- ''+
- '') {
- IQ_id = stanza.getAttribute('id');
- return true;
- }
- }).length).toBe(1);
-
- var stanza = $iq({'to': _converse.connection.jid, 'type':'result', 'id':IQ_id})
- .c('pubsub', {'xmlns': Strophe.NS.PUBSUB})
- .c('items', {'node': 'storage:bookmarks'})
- .c('item', {'id': 'current'})
- .c('storage', {'xmlns': 'storage:bookmarks'});
- _converse.connection._dataRecv(test_utils.createRequest(stanza));
-
- _converse.bookmarks.create({
- 'jid': 'theplay@conference.shakespeare.lit',
- 'autojoin': false,
- 'name': 'The Play',
- 'nick': ''
- });
- test_utils.openControlBox().openRoomsPanel(_converse);
-
test_utils.waitUntil(function () {
- return $('#chatrooms dl.bookmarks dd:visible').length;
+ return _converse.bookmarks;
}, 300).then(function () {
- expect($('#chatrooms dl.bookmarks').hasClass('collapsed')).toBeFalsy();
- expect($('#chatrooms dl.bookmarks dd:visible').length).toBe(1);
- expect(_converse.bookmarksview.list_model.get('toggle-state')).toBe(_converse.OPENED);
- $('#chatrooms .bookmarks-toggle')[0].click();
- expect($('#chatrooms dl.bookmarks').hasClass('collapsed')).toBeTruthy();
- expect(_converse.bookmarksview.list_model.get('toggle-state')).toBe(_converse.CLOSED);
- $('#chatrooms .bookmarks-toggle')[0].click();
- expect($('#chatrooms dl.bookmarks').hasClass('collapsed')).toBeFalsy();
- expect($('#chatrooms dl.bookmarks dd:visible').length).toBe(1);
- expect(_converse.bookmarksview.list_model.get('toggle-state')).toBe(_converse.OPENED);
- done();
+ var IQ_id;
+ expect(_.filter(_converse.connection.send.calls.all(), function (call) {
+ var stanza = call.args[0];
+ if (!(stanza instanceof Element) || stanza.nodeName !== 'iq') {
+ return;
+ }
+ // XXX: Wrapping in a div is a workaround for PhantomJS
+ var div = document.createElement('div');
+ div.appendChild(stanza);
+ if (div.innerHTML ===
+ ''+
+ ''+
+ ''+
+ ''+
+ '') {
+ IQ_id = stanza.getAttribute('id');
+ return true;
+ }
+ }).length).toBe(1);
+
+ var stanza = $iq({'to': _converse.connection.jid, 'type':'result', 'id':IQ_id})
+ .c('pubsub', {'xmlns': Strophe.NS.PUBSUB})
+ .c('items', {'node': 'storage:bookmarks'})
+ .c('item', {'id': 'current'})
+ .c('storage', {'xmlns': 'storage:bookmarks'});
+ _converse.connection._dataRecv(test_utils.createRequest(stanza));
+
+ _converse.bookmarks.create({
+ 'jid': 'theplay@conference.shakespeare.lit',
+ 'autojoin': false,
+ 'name': 'The Play',
+ 'nick': ''
+ });
+ test_utils.openControlBox().openRoomsPanel(_converse);
+
+ test_utils.waitUntil(function () {
+ return $('#chatrooms dl.bookmarks dd:visible').length;
+ }, 300).then(function () {
+ expect($('#chatrooms dl.bookmarks').hasClass('collapsed')).toBeFalsy();
+ expect($('#chatrooms dl.bookmarks dd:visible').length).toBe(1);
+ expect(_converse.bookmarksview.list_model.get('toggle-state')).toBe(_converse.OPENED);
+ $('#chatrooms .bookmarks-toggle')[0].click();
+ expect($('#chatrooms dl.bookmarks').hasClass('collapsed')).toBeTruthy();
+ expect(_converse.bookmarksview.list_model.get('toggle-state')).toBe(_converse.CLOSED);
+ $('#chatrooms .bookmarks-toggle')[0].click();
+ expect($('#chatrooms dl.bookmarks').hasClass('collapsed')).toBeFalsy();
+ expect($('#chatrooms dl.bookmarks dd:visible').length).toBe(1);
+ expect(_converse.bookmarksview.list_model.get('toggle-state')).toBe(_converse.OPENED);
+ done();
+ });
});
}));
});
@@ -521,36 +553,40 @@
{ hide_open_bookmarks: true },
function (done, _converse) {
- test_utils.openControlBox().openRoomsPanel(_converse);
- // XXX Create bookmarks view here, otherwise we need to mock stanza
- // traffic for it to get created.
- _converse.bookmarksview = new _converse.BookmarksView(
- {'model': _converse.bookmarks}
- );
- _converse.emit('bookmarksInitialized');
+ test_utils.waitUntil(function () {
+ return _converse.bookmarks;
+ }, 300).then(function () {
+ test_utils.openControlBox().openRoomsPanel(_converse);
+ // XXX Create bookmarks view here, otherwise we need to mock stanza
+ // traffic for it to get created.
+ _converse.bookmarksview = new _converse.BookmarksView(
+ {'model': _converse.bookmarks}
+ );
+ _converse.emit('bookmarksInitialized');
- // Check that it's there
- var jid = 'room@conference.example.org';
- _converse.bookmarks.create({
- 'jid': jid,
- 'autojoin': false,
- 'name': 'The Play',
- 'nick': ' Othello'
+ // Check that it's there
+ var jid = 'room@conference.example.org';
+ _converse.bookmarks.create({
+ 'jid': jid,
+ 'autojoin': false,
+ 'name': 'The Play',
+ 'nick': ' Othello'
+ });
+
+ expect(_converse.bookmarks.length).toBe(1);
+ var room_els = _converse.bookmarksview.el.querySelectorAll(".open-room");
+ expect(room_els.length).toBe(1);
+
+ // Check that it disappears once the room is opened
+ var bookmark = _converse.bookmarksview.el.querySelector(".open-room");
+ bookmark.click();
+ expect(u.hasClass('hidden', _converse.bookmarksview.el.querySelector(".available-chatroom"))).toBeTruthy();
+ // Check that it reappears once the room is closed
+ var view = _converse.chatboxviews.get(jid);
+ view.close();
+ expect(u.hasClass('hidden', _converse.bookmarksview.el.querySelector(".available-chatroom"))).toBeFalsy();
+ done();
});
-
- expect(_converse.bookmarks.length).toBe(1);
- var room_els = _converse.bookmarksview.el.querySelectorAll(".open-room");
- expect(room_els.length).toBe(1);
-
- // Check that it disappears once the room is opened
- var bookmark = _converse.bookmarksview.el.querySelector(".open-room");
- bookmark.click();
- expect(u.hasClass('hidden', _converse.bookmarksview.el.querySelector(".available-chatroom"))).toBeTruthy();
- // Check that it reappears once the room is closed
- var view = _converse.chatboxviews.get(jid);
- view.close();
- expect(u.hasClass('hidden', _converse.bookmarksview.el.querySelector(".available-chatroom"))).toBeFalsy();
- done();
}));
});
}));
diff --git a/spec/chatbox.js b/spec/chatbox.js
index 02ad8783c..957436ef7 100644
--- a/spec/chatbox.js
+++ b/spec/chatbox.js
@@ -57,7 +57,7 @@
null, ['rosterGroupsFetched'], {},
function (done, _converse) {
- test_utils.waitUntilFeatureSupportConfirmed(_converse, 'vcard-temp')
+ test_utils.waitUntilFeatureSupportConfirmed(_converse, 'localhost', 'vcard-temp')
.then(function () {
return test_utils.waitUntil(function () {
return _converse.xmppstatus.get('fullname');
@@ -1228,7 +1228,7 @@
function (done, _converse) {
var contact, sent_stanza, IQ_id, stanza;
- test_utils.waitUntilFeatureSupportConfirmed(_converse, 'vcard-temp')
+ test_utils.waitUntilFeatureSupportConfirmed(_converse, 'localhost', 'vcard-temp')
.then(function () {
return test_utils.waitUntil(function () {
return _converse.xmppstatus.get('fullname');
@@ -1842,7 +1842,7 @@
function (done, _converse) {
var contact, sent_stanza, IQ_id, stanza;
- test_utils.waitUntilFeatureSupportConfirmed(_converse, 'vcard-temp')
+ test_utils.waitUntilFeatureSupportConfirmed(_converse, 'localhost', 'vcard-temp')
.then(function () {
return test_utils.waitUntil(function () {
return _converse.xmppstatus.get('fullname');
@@ -1989,7 +1989,7 @@
function (done, _converse) {
var contact, sent_stanza, IQ_id, stanza;
- test_utils.waitUntilFeatureSupportConfirmed(_converse, 'vcard-temp')
+ test_utils.waitUntilFeatureSupportConfirmed(_converse, 'localhost', 'vcard-temp')
.then(function () {
return test_utils.waitUntil(function () {
return _converse.xmppstatus.get('fullname');
diff --git a/spec/chatroom.js b/spec/chatroom.js
index ac8a0ac06..4840c24dc 100644
--- a/spec/chatroom.js
+++ b/spec/chatroom.js
@@ -762,7 +762,6 @@
});
var view = _converse.api.rooms.open('coven@chat.shakespeare.lit', {'nick': 'some1'});
- spyOn(view, 'generateHeadingHTML').and.callThrough();
var features_stanza = $iq({
from: 'coven@chat.shakespeare.lit',
'id': IQ_id,
@@ -791,10 +790,12 @@
.c('field', {'type':'text-single', 'var':'muc#roominfo_occupants', 'label':'Number of occupants'})
.c('value').t(0);
_converse.connection._dataRecv(test_utils.createRequest(features_stanza));
-
- expect(view.generateHeadingHTML).toHaveBeenCalled();
- expect($(view.el.querySelector('.chatroom-description')).text()).toBe('This is the description');
- done();
+ test_utils.waitUntil(function () {
+ return _.get(view.el.querySelector('.chatroom-description'), 'textContent');
+ }).then(function () {
+ expect($(view.el.querySelector('.chatroom-description')).text()).toBe('This is the description');
+ done();
+ });
}));
it("will specially mark messages in which you are mentioned",
@@ -825,8 +826,7 @@
null, ['rosterGroupsFetched'], {},
function (done, _converse) {
-
- test_utils.waitUntilFeatureSupportConfirmed(_converse, 'vcard-temp')
+ test_utils.waitUntilFeatureSupportConfirmed(_converse, 'localhost', 'vcard-temp')
.then(function () {
return test_utils.waitUntil(function () {
return _converse.xmppstatus.get('fullname');
@@ -890,19 +890,24 @@
_converse.api.rooms.open('coven@chat.shakespeare.lit', {'nick': 'some1'});
view = _converse.chatboxviews.get('coven@chat.shakespeare.lit');
- spyOn(view, 'saveAffiliationAndRole').and.callThrough();
- // We pretend this is a new room, so no disco info is returned.
- var features_stanza = $iq({
- from: 'coven@chat.shakespeare.lit',
- 'id': IQ_id,
- 'to': 'dummy@localhost/desktop',
- 'type': 'error'
- }).c('error', {'type': 'cancel'})
- .c('item-not-found', {'xmlns': "urn:ietf:params:xml:ns:xmpp-stanzas"});
- _converse.connection._dataRecv(test_utils.createRequest(features_stanza));
+ test_utils.waitUntil(function () {
+ return !_.isNull(view.el.querySelector('.toggle-bookmark'));
+ }, 300).then(function () {
- /*
*
*
@@ -910,191 +915,198 @@
*
*