From 286b716300262aef3061065ba1c75f62077aef99 Mon Sep 17 00:00:00 2001 From: JC Brand Date: Fri, 19 Apr 2013 22:11:40 +0200 Subject: [PATCH] Add initial chatroom tests. --- spec/MainSpec.js | 76 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 68 insertions(+), 8 deletions(-) diff --git a/spec/MainSpec.js b/spec/MainSpec.js index 841423de2..515aa5423 100644 --- a/spec/MainSpec.js +++ b/spec/MainSpec.js @@ -24,7 +24,8 @@ this.bare_jid = 'dummy@localhost'; mock_connection = { 'muc': { - 'listRooms': function () {} + 'listRooms': function () {}, + 'join': function () {} }, 'jid': this.bare_jid, 'addHandler': function (handler, ns, name, type, id, from, options) { @@ -82,18 +83,19 @@ spyOn(view, 'toggleOptions').andCallThrough(); spyOn(view, 'setStatus').andCallThrough(); 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 () { spyOn(view, 'updateStatusUI').andCallThrough(); view.initialize(); // Rebind events for spy view.$el.find('.dropdown dd ul li a').first().click(); expect(view.setStatus).toHaveBeenCalled(); }); - waits(100); + waits(250); runs($.proxy(function () { expect(view.updateStatusUI).toHaveBeenCalled(); expect(view.$el.find('a.choose-xmpp-status').hasClass('online')).toBe(true); @@ -114,7 +116,7 @@ runs (function () { view.$el.find('form input.custom-xmpp-status').val(msg); }); - waits(500); + waits(250); runs (function () { view.$el.find('form#set-custom-xmpp-status').submit(); expect(view.setStatusMessage).toHaveBeenCalled(); @@ -530,5 +532,63 @@ }, 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)); }));