(function (root, factory) { define([ "jquery", "utils", "mock", "test_utils" ], factory); } (this, function ($, utils, mock, test_utils) { "use strict"; var $msg = converse_api.env.$msg, _ = converse_api.env._; describe("A headlines box", function () { afterEach(function () { converse_api.user.logout(); test_utils.clearBrowserStorage(); }); it("will not open nor display non-headline messages", mock.initConverse(function (converse) { /* XMPP spam message: * * * -wwdmz * SORRY FOR THIS ADVERT * SIEVE * <juliet@example.com> You got mail. * * * imap://romeo@example.com/INBOX;UIDVALIDITY=385759043/;UID=18 * * * */ test_utils.openControlBox(); test_utils.openContactsPanel(converse); sinon.spy(utils, 'isHeadlineMessage'); runs(function () { var stanza = $msg({ 'type': 'headline', 'from': 'notify.example.com', 'to': 'dummy@localhost', 'xml:lang': 'en' }) .c('subject').t('SIEVE').up() .c('body').t('<juliet@example.com> You got mail.').up() .c('x', {'xmlns': 'jabber:x:oob'}) .c('url').t('imap://romeo@example.com/INBOX;UIDVALIDITY=385759043/;UID=18'); converse.connection._dataRecv(test_utils.createRequest(stanza)); }); waits(250); runs(function () { expect( _.contains( converse.chatboxviews.keys(), 'notify.example.com') ).toBeTruthy(); expect(utils.isHeadlineMessage.called).toBeTruthy(); expect(utils.isHeadlineMessage.returned(true)).toBeTruthy(); utils.isHeadlineMessage.restore(); // unwraps }); })); }); }));