Write a test for rooms listing.
This commit is contained in:
parent
c7d5b8b13f
commit
762e2bac04
30
converse.js
30
converse.js
|
@ -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 @@
|
||||||
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 @@
|
||||||
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 @@
|
||||||
}, 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
|
||||||
}, 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));
|
||||||
}, converse, mock, test_utils));
|
}, converse, mock, test_utils));
|
||||||
}));
|
}));
|
||||||
|
|
Loading…
Reference in New Issue
Block a user