|
@@ -24,7 +24,8 @@
|
|
this.bare_jid = 'dummy@localhost';
|
|
this.bare_jid = 'dummy@localhost';
|
|
mock_connection = {
|
|
mock_connection = {
|
|
'muc': {
|
|
'muc': {
|
|
- 'listRooms': function () {}
|
|
|
|
|
|
+ 'listRooms': function () {},
|
|
|
|
+ 'join': function () {}
|
|
},
|
|
},
|
|
'jid': this.bare_jid,
|
|
'jid': this.bare_jid,
|
|
'addHandler': function (handler, ns, name, type, id, from, options) {
|
|
'addHandler': function (handler, ns, name, type, id, from, options) {
|
|
@@ -82,18 +83,19 @@
|
|
spyOn(view, 'toggleOptions').andCallThrough();
|
|
spyOn(view, 'toggleOptions').andCallThrough();
|
|
spyOn(view, 'setStatus').andCallThrough();
|
|
spyOn(view, 'setStatus').andCallThrough();
|
|
view.delegateEvents(); // We need to rebind all events otherwise our spy won't be called
|
|
view.delegateEvents(); // We need to rebind all events otherwise our spy won't be called
|
|
-
|
|
|
|
- view.$el.find('a.choose-xmpp-status').click();
|
|
|
|
- expect(view.toggleOptions).toHaveBeenCalled();
|
|
|
|
- expect(view.$el.find('a.choose-xmpp-status').hasClass('online')).toBe(false);
|
|
|
|
-
|
|
|
|
|
|
+ runs(function () {
|
|
|
|
+ view.$el.find('a.choose-xmpp-status').click();
|
|
|
|
+ expect(view.toggleOptions).toHaveBeenCalled();
|
|
|
|
+ expect(view.$el.find('a.choose-xmpp-status').hasClass('online')).toBe(false);
|
|
|
|
+ });
|
|
|
|
+ waits(250);
|
|
runs(function () {
|
|
runs(function () {
|
|
spyOn(view, 'updateStatusUI').andCallThrough();
|
|
spyOn(view, 'updateStatusUI').andCallThrough();
|
|
view.initialize(); // Rebind events for spy
|
|
view.initialize(); // Rebind events for spy
|
|
view.$el.find('.dropdown dd ul li a').first().click();
|
|
view.$el.find('.dropdown dd ul li a').first().click();
|
|
expect(view.setStatus).toHaveBeenCalled();
|
|
expect(view.setStatus).toHaveBeenCalled();
|
|
});
|
|
});
|
|
- waits(100);
|
|
|
|
|
|
+ waits(250);
|
|
runs($.proxy(function () {
|
|
runs($.proxy(function () {
|
|
expect(view.updateStatusUI).toHaveBeenCalled();
|
|
expect(view.updateStatusUI).toHaveBeenCalled();
|
|
expect(view.$el.find('a.choose-xmpp-status').hasClass('online')).toBe(true);
|
|
expect(view.$el.find('a.choose-xmpp-status').hasClass('online')).toBe(true);
|
|
@@ -114,7 +116,7 @@
|
|
runs (function () {
|
|
runs (function () {
|
|
view.$el.find('form input.custom-xmpp-status').val(msg);
|
|
view.$el.find('form input.custom-xmpp-status').val(msg);
|
|
});
|
|
});
|
|
- waits(500);
|
|
|
|
|
|
+ waits(250);
|
|
runs (function () {
|
|
runs (function () {
|
|
view.$el.find('form#set-custom-xmpp-status').submit();
|
|
view.$el.find('form#set-custom-xmpp-status').submit();
|
|
expect(view.setStatusMessage).toHaveBeenCalled();
|
|
expect(view.setStatusMessage).toHaveBeenCalled();
|
|
@@ -530,5 +532,63 @@
|
|
}, xmppchat));
|
|
}, xmppchat));
|
|
}, xmppchat));
|
|
}, xmppchat));
|
|
|
|
|
|
|
|
+ describe("The Controlbox Tabs", $.proxy(function () {
|
|
|
|
+ it("consist of two tabs, 'Contacts' and 'ChatRooms', of which 'Contacts' is by default visible", $.proxy(function () {
|
|
|
|
+ var cbview = this.chatboxesview.views.controlbox;
|
|
|
|
+ var $panels = cbview.$el.find('#controlbox-panes');
|
|
|
|
+ expect($panels.children().length).toBe(2);
|
|
|
|
+ expect($panels.children().first().attr('id')).toBe('users');
|
|
|
|
+ expect($panels.children().first().is(':visible')).toBe(true);
|
|
|
|
+ expect($panels.children().last().attr('id')).toBe('chatrooms');
|
|
|
|
+ expect($panels.children().last().is(':visible')).toBe(false);
|
|
|
|
+ }, xmppchat));
|
|
|
|
+
|
|
|
|
+ describe("The Chatrooms Panel", $.proxy(function () {
|
|
|
|
+
|
|
|
|
+ it("is opened by clicking the 'Chatrooms' tab", $.proxy(function () {
|
|
|
|
+ var cbview = this.chatboxesview.views.controlbox;
|
|
|
|
+ var $tabs = cbview.$el.find('#controlbox-tabs');
|
|
|
|
+ var $panels = cbview.$el.find('#controlbox-panes');
|
|
|
|
+ var $contacts = $panels.children().first();
|
|
|
|
+ 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();
|
|
|
|
+ });
|
|
|
|
+ }, xmppchat));
|
|
|
|
+
|
|
|
|
+ it("contains a form through which a new chatroom can be created", $.proxy(function () {
|
|
|
|
+ var roomspanel = this.chatboxesview.views.controlbox.roomspanel;
|
|
|
|
+ var $input = roomspanel.$el.find('input.new-chatroom-name');
|
|
|
|
+ expect($input.length).toBe(1);
|
|
|
|
+ expect($('.chatroom').length).toBe(0); // There shouldn't be any chatrooms open currently
|
|
|
|
+ spyOn(roomspanel, 'createChatRoom').andCallThrough();
|
|
|
|
+ roomspanel.delegateEvents(); // We need to rebind all events otherwise our spy won't be called
|
|
|
|
+ runs(function () {
|
|
|
|
+ $input.val('Lounge');
|
|
|
|
+ });
|
|
|
|
+ waits('250');
|
|
|
|
+ runs(function () {
|
|
|
|
+ roomspanel.$el.find('form').submit();
|
|
|
|
+ expect(roomspanel.createChatRoom).toHaveBeenCalled();
|
|
|
|
+ });
|
|
|
|
+ waits('250');
|
|
|
|
+ runs($.proxy(function () {
|
|
|
|
+ expect($('.chatroom').length).toBe(1); // There should now be an open chatroom
|
|
|
|
+ }, xmppchat));
|
|
|
|
+ }, xmppchat));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }, xmppchat));
|
|
|
|
+ }, xmppchat));
|
|
|
|
+
|
|
|
|
+
|
|
}, xmppchat));
|
|
}, xmppchat));
|
|
}));
|
|
}));
|