diff --git a/spec/bookmarks.js b/spec/bookmarks.js index 9b88d1aa9..3c115afd5 100644 --- a/spec/bookmarks.js +++ b/spec/bookmarks.js @@ -309,11 +309,14 @@ if (!(stanza instanceof Element) || stanza.nodeName !== 'iq') { return; } - if (stanza.outerHTML === + // XXX: Wrapping in a div is a workaround for PhantomJS + var div = document.createElement('div'); + div.appendChild(stanza); + if (div.innerHTML === ''+ ''+ - ''+ + ''+ ''+ '') { IQ_id = stanza.getAttribute('id'); @@ -366,14 +369,29 @@ describe("The rooms panel", function () { - it("shows a list of bookmarks", mock.initConverse(function (_converse) { + it("shows a list of bookmarks", mock.initConverseWithConnectionSpies(['send'], function (_converse) { var IQ_id; - var sendIQ = _converse.connection.sendIQ; - spyOn(_converse.connection, 'sendIQ').and.callFake(function (iq, callback, errback) { - IQ_id = sendIQ.bind(this)(iq, callback, errback); - }); + expect(_.filter(_converse.connection.send.calls.all(), function (call) { + var stanza = call.args[0] + if (!(stanza instanceof Element) || stanza.nodeName !== 'iq') { + return; + } + // XXX: Wrapping in a div is a workaround for PhantomJS + var div = document.createElement('div'); + div.appendChild(stanza); + if (div.innerHTML === + ''+ + ''+ + ''+ + ''+ + '') { + IQ_id = stanza.getAttribute('id'); + return true; + } + }).length).toBe(1); + _converse.chatboxviews.get('controlbox').$('#chatrooms dl.bookmarks').html(''); - _converse.emit('chatBoxesFetched'); var stanza = $iq({'to': _converse.connection.jid, 'type':'result', 'id':IQ_id}) .c('pubsub', {'xmlns': Strophe.NS.PUBSUB}) .c('items', {'node': 'storage:bookmarks'}) @@ -398,14 +416,42 @@ expect($('#chatrooms dl.bookmarks dd').length).toBe(3); })); - it("remembers the toggle state of the bookmarks list", mock.initConverse(function (_converse) { + it("remembers the toggle state of the bookmarks list", + mock.initConverseWithConnectionSpies(['send'], function (_converse) { + var IQ_id; + expect(_.filter(_converse.connection.send.calls.all(), function (call) { + var stanza = call.args[0] + if (!(stanza instanceof Element) || stanza.nodeName !== 'iq') { + return; + } + // XXX: Wrapping in a div is a workaround for PhantomJS + var div = document.createElement('div'); + div.appendChild(stanza); + if (div.innerHTML === + ''+ + ''+ + ''+ + ''+ + '') { + IQ_id = stanza.getAttribute('id'); + return true; + } + }).length).toBe(1); + _converse.chatboxviews.get('controlbox').$('#chatrooms dl.bookmarks').html(''); + var stanza = $iq({'to': _converse.connection.jid, 'type':'result', 'id':IQ_id}) + .c('pubsub', {'xmlns': Strophe.NS.PUBSUB}) + .c('items', {'node': 'storage:bookmarks'}) + .c('item', {'id': 'current'}) + .c('storage', {'xmlns': 'storage:bookmarks'}); + _converse.connection._dataRecv(test_utils.createRequest(stanza)); + _converse.bookmarks.create({ 'jid': 'theplay@conference.shakespeare.lit', 'autojoin': false, 'name': 'The Play', 'nick': '' }); - _converse.emit('chatBoxesFetched'); test_utils.openControlBox().openRoomsPanel(_converse); expect($('#chatrooms dl.bookmarks dd:visible').length).toBe(1); expect(_converse.bookmarksview.list_model.get('toggle-state')).toBe(_converse.OPENED); diff --git a/src/converse-core.js b/src/converse-core.js index 9693f24c9..66694f571 100755 --- a/src/converse-core.js +++ b/src/converse-core.js @@ -38,8 +38,9 @@ * config of requirejs-tpl in main.js). This one is for normal inline templates. */ _.templateSettings = { - evaluate : /\{\[([\s\S]+?)\]\}/g, - interpolate : /\{\{([\s\S]+?)\}\}/g + 'escape': /\{\{\{([\s\S]+?)\}\}\}/g, + 'evaluate': /\{\[([\s\S]+?)\]\}/g, + 'interpolate': /\{\{([\s\S]+?)\}\}/g }; var _converse = {};