From ac0042fdf9f548f46dbbaf5fca1453677af6004f Mon Sep 17 00:00:00 2001 From: JC Brand Date: Tue, 4 Mar 2014 13:22:49 +0200 Subject: [PATCH] Extend the "close chat" test with a normal chatbox usecase --- converse.js | 2 +- spec/chatbox.js | 27 ++++++++++++++++++++------- tests/utils.js | 5 +++-- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/converse.js b/converse.js index a2ae2cd66..e0a58eb28 100644 --- a/converse.js +++ b/converse.js @@ -2537,7 +2537,7 @@ openChat: function (ev) { ev.preventDefault(); - converse.chatboxesview.showChatBox({ + return converse.chatboxesview.showChatBox({ 'id': this.model.get('jid'), 'jid': this.model.get('jid'), 'fullname': this.model.get('fullname'), diff --git a/spec/chatbox.js b/spec/chatbox.js index 55976b31d..e032af005 100644 --- a/spec/chatbox.js +++ b/spec/chatbox.js @@ -77,21 +77,34 @@ }.bind(converse)); }, converse)); - it("can be closed again by clicking a DOM element with class 'close-chatbox-button'", $.proxy(function () { + it("can be closed by clicking a DOM element with class 'close-chatbox-button'", $.proxy(function () { + var chatbox = utils.openChatBoxes(1)[0], + controlview = this.chatboxesview.views.controlbox, // The controlbox is currently open + chatview = this.chatboxesview.views[chatbox.get('jid')]; + spyOn(chatview, 'closeChat').andCallThrough(); + spyOn(controlview, 'closeChat').andCallThrough(); spyOn(converse, 'emit'); - var view = this.chatboxesview.views.controlbox; // The controlbox is currently open - spyOn(view, 'closeChat').andCallThrough(); - view.delegateEvents(); // We need to rebind all events otherwise our spy won't be called + + // We need to rebind all events otherwise our spy won't be called + controlview.delegateEvents(); + chatview.delegateEvents(); runs(function () { - view.$el.find('.close-chatbox-button').click(); + controlview.$el.find('.close-chatbox-button').click(); }); waits(250); runs(function () { - expect(view.closeChat).toHaveBeenCalled(); + expect(controlview.closeChat).toHaveBeenCalled(); expect(converse.emit).toHaveBeenCalledWith('onChatBoxClosed', jasmine.any(Object)); + expect(converse.emit.callCount, 1); + chatview.$el.find('.close-chatbox-button').click(); + }); + waits(250); + runs(function () { + expect(chatview.closeChat).toHaveBeenCalled(); + expect(converse.emit).toHaveBeenCalledWith('onChatBoxClosed', jasmine.any(Object)); + expect(converse.emit.callCount, 2); }); - // TODO: Open a normal chatbox and close it again... }, converse)); it("will be removed from localStorage when closed", $.proxy(function () { diff --git a/tests/utils.js b/tests/utils.js index 93e53575c..e840317e0 100644 --- a/tests/utils.js +++ b/tests/utils.js @@ -78,11 +78,12 @@ }; utils.openChatBoxes = function (amount) { - var i = 0, jid; + var i = 0, jid, views = []; for (i; i