Commit be9cd599 authored by JC Brand's avatar JC Brand

Add chatroom test concerning localstorage

parent 743eb1da
...@@ -453,7 +453,7 @@ ...@@ -453,7 +453,7 @@
// onConnected method // onConnected method
newchatboxes.onConnected(); newchatboxes.onConnected();
expect(newchatboxes.length).toEqual(6); expect(newchatboxes.length).toEqual(6);
// Check that the roster items retrieved from localStorage // Check that the chatboxes items retrieved from localStorage
// have the same attributes values as the original ones. // have the same attributes values as the original ones.
attrs = ['id', 'box_id', 'visible']; attrs = ['id', 'box_id', 'visible'];
for (i=0; i<attrs.length; i++) { for (i=0; i<attrs.length; i++) {
...@@ -556,6 +556,17 @@ ...@@ -556,6 +556,17 @@
}, converse)); }, converse));
describe("The Controlbox Tabs", $.proxy(function () { describe("The Controlbox Tabs", $.proxy(function () {
beforeEach($.proxy(function () {
// Close any remaining open chatboxes
var i, chatbox, num_chatboxes = this.chatboxes.models.length;
for (i=0; i<num_chatboxes; i++) {
chatbox = this.chatboxes.models[i];
if (chatbox.get('id') != 'controlbox') {
this.chatboxesview.views[chatbox.get('id')].closeChat();
}
}
}, converse));
it("contains two tabs, 'Contacts' and 'ChatRooms'", $.proxy(function () { it("contains two tabs, 'Contacts' and 'ChatRooms'", $.proxy(function () {
var cbview = this.chatboxesview.views.controlbox; var cbview = this.chatboxesview.views.controlbox;
var $panels = cbview.$el.find('#controlbox-panes'); var $panels = cbview.$el.find('#controlbox-panes');
...@@ -627,6 +638,26 @@ ...@@ -627,6 +638,26 @@
chatroomview.onChatRoomRoster(roster, room); chatroomview.onChatRoomRoster(roster, room);
}, converse)); }, converse));
it("can be saved to, and retrieved from, localStorage", $.proxy(function () {
// We instantiate a new ChatBoxes collection, which by default
// will be empty.
var newchatboxes = new this.ChatBoxes();
expect(newchatboxes.length).toEqual(0);
// The chatboxes will then be fetched from localStorage inside the
// onConnected method
newchatboxes.onConnected();
expect(newchatboxes.length).toEqual(2); // controlbox is also included
// Check that the chatrooms retrieved from localStorage
// have the same attributes values as the original ones.
attrs = ['id', 'box_id', 'visible'];
for (i=0; i<attrs.length; i++) {
new_attrs = _.pluck(_.pluck(newchatboxes.models, 'attributes'), attrs[i]);
old_attrs = _.pluck(_.pluck(this.chatboxes.models, 'attributes'), attrs[i]);
expect(_.isEqual(new_attrs, old_attrs)).toEqual(true);
}
this.rosterview.render();
}, converse));
it("can be closed again by clicking a DOM element with class 'close-chatbox-button'", $.proxy(function () { it("can be closed again by clicking a DOM element with class 'close-chatbox-button'", $.proxy(function () {
var view = this.chatboxesview.views['lounge@muc.localhost'], chatroom = view.model, $el; var view = this.chatboxesview.views['lounge@muc.localhost'], chatroom = view.model, $el;
spyOn(view, 'closeChat').andCallThrough(); spyOn(view, 'closeChat').andCallThrough();
......
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