Add test to check that the open rooms list shows unread messages

This commit is contained in:
JC Brand 2017-05-23 20:42:12 +02:00
parent a4284e48f7
commit 3e5beaaf64

View File

@ -2,6 +2,7 @@
define(["mock", "converse-core", "converse-roomslist", "test-utils"], factory); define(["mock", "converse-core", "converse-roomslist", "test-utils"], factory);
} (this, function (mock, converse, roomslist, test_utils) { } (this, function (mock, converse, roomslist, test_utils) {
var _ = converse.env._; var _ = converse.env._;
var $msg = converse.env.$msg;
describe("The converse-roomslist plugin", function () { describe("The converse-roomslist plugin", function () {
@ -48,7 +49,37 @@
)); ));
}); });
describe("An open room shown in the rooms list", function () { describe("An room shown in the rooms list", function () {
it("shows unread messages directed at the user", mock.initConverse(
{ whitelisted_plugins: ['converse-roomslist'],
allow_bookmarks: false // Makes testing easier, otherwise we
// have to mock stanza traffic.
}, function (_converse) {
var room_jid = 'kitchen@conference.shakespeare.lit';
test_utils.openAndEnterChatRoom(
_converse, 'kitchen', 'conference.shakespeare.lit', 'romeo');
var view = _converse.chatboxviews.get(room_jid);
view.model.set({'minimized': true});
var contact_jid = mock.cur_names[5].replace(/ /g,'.').toLowerCase() + '@localhost';
var message = 'romeo: Your attention is required';
var nick = mock.chatroom_names[0],
msg = $msg({
from: room_jid+'/'+nick,
id: (new Date()).getTime(),
to: 'dummy@localhost',
type: 'groupchat'
}).c('body').t(message).tree();
view.handleMUCMessage(msg);
expect(_converse.minimized_chats.toggleview.$('.unread-message-count').is(':visible')).toBeTruthy();
expect(_converse.minimized_chats.toggleview.$('.unread-message-count').text()).toBe('1');
var room_el = _converse.rooms_list_view.el.querySelector(".available-chatroom");
expect(_.includes(room_el.classList, 'unread-msgs'));
}));
it("can be closed", mock.initConverse( it("can be closed", mock.initConverse(
{ whitelisted_plugins: ['converse-roomslist'], { whitelisted_plugins: ['converse-roomslist'],
@ -56,24 +87,24 @@
// have to mock stanza traffic. // have to mock stanza traffic.
}, },
function (_converse) { function (_converse) {
spyOn(window, 'confirm').and.callFake(function () {
return true; spyOn(window, 'confirm').and.callFake(function () {
}); return true;
expect(_converse.chatboxes.length).toBe(1); });
test_utils.openChatRoom( expect(_converse.chatboxes.length).toBe(1);
_converse, 'lounge', 'conference.shakespeare.lit', 'JC'); test_utils.openChatRoom(
expect(_converse.chatboxes.length).toBe(2); _converse, 'lounge', 'conference.shakespeare.lit', 'JC');
test_utils.openControlBox().openRoomsPanel(_converse); expect(_converse.chatboxes.length).toBe(2);
var room_els = _converse.rooms_list_view.el.querySelectorAll(".open-room"); test_utils.openControlBox().openRoomsPanel(_converse);
expect(room_els.length).toBe(1); var room_els = _converse.rooms_list_view.el.querySelectorAll(".open-room");
var close_el = _converse.rooms_list_view.el.querySelector(".close-room"); expect(room_els.length).toBe(1);
close_el.click(); var close_el = _converse.rooms_list_view.el.querySelector(".close-room");
expect(window.confirm).toHaveBeenCalledWith( close_el.click();
'Are you sure you want to leave the room ""?'); expect(window.confirm).toHaveBeenCalledWith(
room_els = _converse.rooms_list_view.el.querySelectorAll(".open-room"); 'Are you sure you want to leave the room ""?');
expect(room_els.length).toBe(0); room_els = _converse.rooms_list_view.el.querySelectorAll(".open-room");
expect(_converse.chatboxes.length).toBe(1); expect(room_els.length).toBe(0);
} expect(_converse.chatboxes.length).toBe(1);
)); }));
}); });
})); }));