Write a test for rooms listing.

This commit is contained in:
JC Brand 2015-03-01 19:09:10 +01:00
parent c7d5b8b13f
commit 762e2bac04
2 changed files with 61 additions and 44 deletions

View File

@ -1789,17 +1789,10 @@
$('input#show-rooms').show().siblings('span.spinner').remove();
},
updateRoomsList: function () {
/* Send and IQ stanza to the server asking for all rooms
onRoomsFound: function (iq) {
/* 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,
that = this,
$available_chatrooms = this.$el.find('#available-chatrooms');
@ -1827,9 +1820,20 @@
this.informNoRoomsFound();
}
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) {

View File

@ -1076,15 +1076,10 @@
var $chatrooms = $panels.children().last();
spyOn(cbview, 'switchTab').andCallThrough();
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
});
waits(250);
runs(function () {
expect($contacts.is(':visible')).toBe(false);
expect($chatrooms.is(':visible')).toBe(true);
expect(cbview.switchTab).toHaveBeenCalled();
});
}, converse));
it("contains a form through which a new chatroom can be created", $.proxy(function () {
@ -1113,11 +1108,29 @@
}, converse));
}, converse));
it("lists rooms currently on the server", $.proxy(function () {
// TODO: test updateRoomsList
it("can list rooms publically available on the server", $.proxy(function () {
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
}, converse));
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, mock, test_utils));
}));