diff --git a/spec/roomslist.js b/spec/roomslist.js index 741ff8e81..899af61e6 100644 --- a/spec/roomslist.js +++ b/spec/roomslist.js @@ -5,7 +5,7 @@ describe("The converse-roomslist plugin", function () { - it("shows a list of open rooms in the \"Rooms\" panel", mock.initConverse( + it("is shown under a list of open rooms in the \"Rooms\" panel", mock.initConverse( { whitelisted_plugins: ['converse-roomslist'], allow_bookmarks: false // Makes testing easier, otherwise we // have to mock stanza traffic. @@ -47,4 +47,33 @@ } )); }); + + describe("An open room shown in the rooms list", function () { + + it("can be closed", mock.initConverse( + { whitelisted_plugins: ['converse-roomslist'], + allow_bookmarks: false // Makes testing easier, otherwise we + // have to mock stanza traffic. + }, + function (_converse) { + spyOn(window, 'confirm').and.callFake(function () { + return true; + }); + expect(_converse.chatboxes.length).toBe(1); + test_utils.openChatRoom( + _converse, 'lounge', 'conference.shakespeare.lit', 'JC'); + expect(_converse.chatboxes.length).toBe(2); + test_utils.openControlBox().openRoomsPanel(_converse); + var room_els = _converse.rooms_list_view.el.querySelectorAll(".open-room"); + expect(room_els.length).toBe(1); + var close_el = _converse.rooms_list_view.el.querySelector(".close-room"); + close_el.click(); + expect(window.confirm).toHaveBeenCalledWith( + 'Are you sure you want to leave the room ""?'); + room_els = _converse.rooms_list_view.el.querySelectorAll(".open-room"); + expect(room_els.length).toBe(0); + expect(_converse.chatboxes.length).toBe(1); + } + )); + }); }));