Commit 762e2bac authored by JC Brand's avatar JC Brand

Write a test for rooms listing.

parent c7d5b8b1
...@@ -1789,17 +1789,10 @@ ...@@ -1789,17 +1789,10 @@
$('input#show-rooms').show().siblings('span.spinner').remove(); $('input#show-rooms').show().siblings('span.spinner').remove();
}, },
updateRoomsList: function () { onRoomsFound: function (iq) {
/* Send and IQ stanza to the server asking for all rooms /* Handle the IQ stanza returned from the server, containing
* all its public rooms.
*/ */
converse.connection.sendIQ(
$iq({
to: this.model.get('muc_domain'),
from: converse.connection.jid,
type: "get"
}).c("query", {xmlns: Strophe.NS.DISCO_ITEMS}),
// Succcess Handler
$.proxy(function (iq) {
var name, jid, i, fragment, var name, jid, i, fragment,
that = this, that = this,
$available_chatrooms = this.$el.find('#available-chatrooms'); $available_chatrooms = this.$el.find('#available-chatrooms');
...@@ -1827,9 +1820,20 @@ ...@@ -1827,9 +1820,20 @@
this.informNoRoomsFound(); this.informNoRoomsFound();
} }
return true; return true;
}, this), },
// Error handler
$.proxy(function (iq) { this.informNoRoomsFound(); }, this)); updateRoomsList: function () {
/* Send and IQ stanza to the server asking for all rooms
*/
converse.connection.sendIQ(
$iq({
to: this.model.get('muc_domain'),
from: converse.connection.jid,
type: "get"
}).c("query", {xmlns: Strophe.NS.DISCO_ITEMS}),
$.proxy(function (iq) { this.onRoomsFound(); }, this),
$.proxy(function (iq) { this.informNoRoomsFound(); }, this)
);
}, },
showRooms: function (ev) { showRooms: function (ev) {
......
...@@ -1076,15 +1076,10 @@ ...@@ -1076,15 +1076,10 @@
var $chatrooms = $panels.children().last(); var $chatrooms = $panels.children().last();
spyOn(cbview, 'switchTab').andCallThrough(); spyOn(cbview, 'switchTab').andCallThrough();
cbview.delegateEvents(); // We need to rebind all events otherwise our spy won't be called cbview.delegateEvents(); // We need to rebind all events otherwise our spy won't be called
runs(function () {
$tabs.find('li').last().find('a').click(); // Clicks the chatrooms tab $tabs.find('li').last().find('a').click(); // Clicks the chatrooms tab
});
waits(250);
runs(function () {
expect($contacts.is(':visible')).toBe(false); expect($contacts.is(':visible')).toBe(false);
expect($chatrooms.is(':visible')).toBe(true); expect($chatrooms.is(':visible')).toBe(true);
expect(cbview.switchTab).toHaveBeenCalled(); expect(cbview.switchTab).toHaveBeenCalled();
});
}, converse)); }, converse));
it("contains a form through which a new chatroom can be created", $.proxy(function () { it("contains a form through which a new chatroom can be created", $.proxy(function () {
...@@ -1113,11 +1108,29 @@ ...@@ -1113,11 +1108,29 @@
}, converse)); }, converse));
}, converse)); }, converse));
it("lists rooms currently on the server", $.proxy(function () { it("can list rooms publically available on the server", $.proxy(function () {
// TODO: test updateRoomsList var panel = this.chatboxviews.get('controlbox').roomspanel;
panel.$tabs.find('li').last().find('a').click(); // Click the chatrooms tab
panel.model.set({'muc_domain': 'muc.localhost'}); // Make sure the domain is set
// See: http://xmpp.org/extensions/xep-0045.html#disco-rooms // See: http://xmpp.org/extensions/xep-0045.html#disco-rooms
expect($('#available-chatrooms').children('dt').length).toBe(0);
expect($('#available-chatrooms').children('dd').length).toBe(0);
var iq = $iq({
from:'muc.localhost',
to:'dummy@localhost/pda',
type:'result'
}).c('query')
.c('item', { jid:'heath@chat.shakespeare.lit', name:'A Lonely Heath'}).up()
.c('item', { jid:'coven@chat.shakespeare.lit', name:'A Dark Cave'}).up()
.c('item', { jid:'forres@chat.shakespeare.lit', name:'The Palace'}).up()
.c('item', { jid:'inverness@chat.shakespeare.lit', name:'Macbeth's Castle'}).nodeTree;
panel.onRoomsFound(iq);
expect(panel.$('#available-chatrooms').children('dt').length).toBe(1);
expect(panel.$('#available-chatrooms').children('dt').first().text()).toBe("Rooms on muc.localhost");
expect(panel.$('#available-chatrooms').children('dd').length).toBe(4);
}, converse)); }, converse));
}, converse)); }, converse));
}, converse, mock, test_utils)); }, converse, mock, test_utils));
})); }));
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