diff --git a/css/converse.css b/css/converse.css index 1df34f016..1e801ae4a 100644 --- a/css/converse.css +++ b/css/converse.css @@ -1527,7 +1527,6 @@ left: 0; } #conversejs #controlbox { - display: none; margin-right: 1em; } @media screen and (max-width: 480px) { #conversejs #controlbox { @@ -2119,7 +2118,6 @@ border-top-left-radius: 4px; border-top-right-radius: 4px; color: white; - display: none; float: right; font-weight: bold; height: 100%; diff --git a/sass/_controlbox.scss b/sass/_controlbox.scss index 465f41a48..8d772b9aa 100644 --- a/sass/_controlbox.scss +++ b/sass/_controlbox.scss @@ -1,6 +1,5 @@ #conversejs { #controlbox { - display: none; margin-right: 2*$chat-gutter; @media screen and (max-width: $mobile-portrait-length) { margin: 0; diff --git a/sass/_minimized_chats.scss b/sass/_minimized_chats.scss index f84a48eb9..35a6b301e 100644 --- a/sass/_minimized_chats.scss +++ b/sass/_minimized_chats.scss @@ -3,7 +3,6 @@ border-top-left-radius: $chatbox-border-radius; border-top-right-radius: $chatbox-border-radius; color: $inverse-link-color; - display: none; float: right; font-weight: bold; height: 100%; diff --git a/spec/chatbox.js b/spec/chatbox.js index 4cadde404..72401521a 100644 --- a/spec/chatbox.js +++ b/spec/chatbox.js @@ -847,50 +847,51 @@ test_utils.createContacts(converse, 'current'); test_utils.openControlBox(); test_utils.openContactsPanel(converse); - var contact_name = mock.cur_names[0]; var contact_jid = contact_name.replace(/ /g,'.').toLowerCase() + '@localhost'; - spyOn(converse, 'emit').andCallThrough(); - test_utils.openChatBoxFor(converse, contact_jid); - var chatview = converse.chatboxviews.get(contact_jid); - expect(chatview.$el.is(':visible')).toBeTruthy(); - expect(chatview.model.get('minimized')).toBeFalsy(); - chatview.$el.find('.toggle-chatbox-button').click(); - expect(chatview.model.get('minimized')).toBeTruthy(); - var message = 'This message is sent to a minimized chatbox'; - var sender_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost'; - var msg = $msg({ - from: sender_jid, - to: converse.connection.jid, - type: 'chat', - id: (new Date()).getTime() - }).c('body').t(message).up() - .c('active', {'xmlns': 'http://jabber.org/protocol/chatstates'}).tree(); - converse.chatboxes.onMessage(msg); - expect(converse.emit).toHaveBeenCalledWith('message', msg); - var trimmed_chatboxes = converse.minimized_chats; - var trimmedview = trimmed_chatboxes.get(contact_jid); - var $count = trimmedview.$el.find('.chat-head-message-count'); - expect(chatview.$el.is(':visible')).toBeFalsy(); - expect(trimmedview.model.get('minimized')).toBeTruthy(); - expect($count.is(':visible')).toBeTruthy(); - expect($count.html()).toBe('1'); - converse.chatboxes.onMessage( - $msg({ - from: mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost', + runs(function () { + spyOn(converse, 'emit').andCallThrough(); + test_utils.openChatBoxFor(converse, contact_jid); + var chatview = converse.chatboxviews.get(contact_jid); + expect(chatview.$el.is(':visible')).toBeTruthy(); + expect(chatview.model.get('minimized')).toBeFalsy(); + chatview.$el.find('.toggle-chatbox-button').click(); + expect(chatview.model.get('minimized')).toBeTruthy(); + var message = 'This message is sent to a minimized chatbox'; + var sender_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost'; + var msg = $msg({ + from: sender_jid, to: converse.connection.jid, type: 'chat', id: (new Date()).getTime() - }).c('body').t('This message is also sent to a minimized chatbox').up() - .c('active', {'xmlns': 'http://jabber.org/protocol/chatstates'}).tree() - ); - expect(chatview.$el.is(':visible')).toBeFalsy(); - expect(trimmedview.model.get('minimized')).toBeTruthy(); - $count = trimmedview.$el.find('.chat-head-message-count'); - expect($count.is(':visible')).toBeTruthy(); - expect($count.html()).toBe('2'); - trimmedview.$el.find('.restore-chat').click(); - expect(trimmed_chatboxes.keys().length).toBe(0); + }).c('body').t(message).up() + .c('active', {'xmlns': 'http://jabber.org/protocol/chatstates'}).tree(); + converse.chatboxes.onMessage(msg); + expect(converse.emit).toHaveBeenCalledWith('message', msg); + var trimmed_chatboxes = converse.minimized_chats; + var trimmedview = trimmed_chatboxes.get(contact_jid); + var $count = trimmedview.$el.find('.chat-head-message-count'); + expect(chatview.$el.is(':visible')).toBeFalsy(); + expect(trimmedview.model.get('minimized')).toBeTruthy(); + expect($count.is(':visible')).toBeTruthy(); + expect($count.html()).toBe('1'); + converse.chatboxes.onMessage( + $msg({ + from: mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost', + to: converse.connection.jid, + type: 'chat', + id: (new Date()).getTime() + }).c('body').t('This message is also sent to a minimized chatbox').up() + .c('active', {'xmlns': 'http://jabber.org/protocol/chatstates'}).tree() + ); + expect(chatview.$el.is(':visible')).toBeFalsy(); + expect(trimmedview.model.get('minimized')).toBeTruthy(); + $count = trimmedview.$el.find('.chat-head-message-count'); + expect($count.is(':visible')).toBeTruthy(); + expect($count.html()).toBe('2'); + trimmedview.$el.find('.restore-chat').click(); + expect(trimmed_chatboxes.keys().length).toBe(0); + }); })); it("will indicate when it has a time difference of more than a day between it and its predecessor", mock.initConverse(function (converse) { @@ -1198,22 +1199,27 @@ test_utils.createContacts(converse, 'current'); test_utils.openControlBox(); test_utils.openContactsPanel(converse); - var contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost'; - test_utils.openChatBoxFor(converse, contact_jid); - var view = converse.chatboxviews.get(contact_jid); - view.minimize(); - expect(view.model.get('chat_state')).toBe('inactive'); - spyOn(converse.connection, 'send'); - view.maximize(); - expect(view.model.get('chat_state')).toBe('active'); - expect(converse.connection.send).toHaveBeenCalled(); - var $stanza = $(converse.connection.send.argsForCall[0][0].tree()); - expect($stanza.attr('to')).toBe(contact_jid); - expect($stanza.children().length).toBe(3); - expect($stanza.children().get(0).tagName).toBe('active'); - expect($stanza.children().get(1).tagName).toBe('no-store'); - expect($stanza.children().get(2).tagName).toBe('no-permanent-store'); + + runs(function () { + test_utils.openChatBoxFor(converse, contact_jid); + }); + waits(300); // ChatBox.show() is debounced for 250ms + runs(function () { + var view = converse.chatboxviews.get(contact_jid); + view.model.minimize(); + expect(view.model.get('chat_state')).toBe('inactive'); + spyOn(converse.connection, 'send'); + view.model.maximize(); + expect(view.model.get('chat_state')).toBe('active'); + expect(converse.connection.send).toHaveBeenCalled(); + var $stanza = $(converse.connection.send.argsForCall[0][0].tree()); + expect($stanza.attr('to')).toBe(contact_jid); + expect($stanza.children().length).toBe(3); + expect($stanza.children().get(0).tagName).toBe('active'); + expect($stanza.children().get(1).tagName).toBe('no-store'); + expect($stanza.children().get(2).tagName).toBe('no-permanent-store'); + }); })); }); diff --git a/spec/chatroom.js b/spec/chatroom.js index e76588054..c62683efd 100644 --- a/spec/chatroom.js +++ b/spec/chatroom.js @@ -656,18 +656,17 @@ runs(function () { view.$el.find('.toggle-chatbox-button').click(); }); - waits(50); + waits(350); runs(function () { expect(view.minimize).toHaveBeenCalled(); expect(converse.emit).toHaveBeenCalledWith('chatBoxMinimized', jasmine.any(Object)); - expect(converse.emit.callCount, 2); expect(view.$el.is(':visible')).toBeFalsy(); expect(view.model.get('minimized')).toBeTruthy(); expect(view.minimize).toHaveBeenCalled(); var trimmedview = trimmed_chatboxes.get(view.model.get('id')); trimmedview.$("a.restore-chat").click(); }); - waits(250); + waits(350); runs(function () { expect(view.maximize).toHaveBeenCalled(); expect(converse.emit).toHaveBeenCalledWith('chatBoxMaximized', jasmine.any(Object)); diff --git a/spec/controlbox.js b/spec/controlbox.js index 0ca0b82ec..0e79cf849 100644 --- a/spec/controlbox.js +++ b/spec/controlbox.js @@ -904,34 +904,41 @@ }); it("can be added to the roster and they will be sorted alphabetically", mock.initConverse(function (converse) { - test_utils.createContacts(converse, 'requesting').openControlBox(); - test_utils.openContactsPanel(converse); - converse.rosterview.model.reset(); // We want to manually create users so that we can spy var i, children; var names = []; - spyOn(converse, 'emit'); - spyOn(converse.rosterview, 'update').andCallThrough(); - spyOn(converse.controlboxtoggle, 'showControlBox').andCallThrough(); var addName = function (idx, item) { if (!$(item).hasClass('request-actions')) { names.push($(item).text().replace(/^\s+|\s+$/g, '')); } }; - for (i=0; i