|
@@ -9,7 +9,9 @@
|
|
} (this, function (jasmine, utils, mock, converse, test_utils) {
|
|
} (this, function (jasmine, utils, mock, converse, test_utils) {
|
|
|
|
|
|
var _ = converse.env._;
|
|
var _ = converse.env._;
|
|
|
|
+ var Strophe = converse.env.Strophe;
|
|
var $msg = converse.env.$msg;
|
|
var $msg = converse.env.$msg;
|
|
|
|
+ var $pres = converse.env.$pres;
|
|
var u = converse.env.utils;
|
|
var u = converse.env.utils;
|
|
|
|
|
|
return describe("A spoiler message", function () {
|
|
return describe("A spoiler message", function () {
|
|
@@ -93,57 +95,69 @@
|
|
test_utils.openControlBox();
|
|
test_utils.openControlBox();
|
|
test_utils.openContactsPanel(_converse);
|
|
test_utils.openContactsPanel(_converse);
|
|
var contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost';
|
|
var contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost';
|
|
- test_utils.openChatBoxFor(_converse, contact_jid);
|
|
|
|
-
|
|
|
|
- var view = _converse.chatboxviews.get(contact_jid);
|
|
|
|
- spyOn(view, 'onMessageSubmitted').and.callThrough();
|
|
|
|
- spyOn(_converse.connection, 'send');
|
|
|
|
|
|
|
|
- var spoiler_toggle = view.el.querySelector('.toggle-compose-spoiler');
|
|
|
|
- spoiler_toggle.click();
|
|
|
|
|
|
+ // XXX: We need to send a presence from the contact, so that we
|
|
|
|
+ // have a resource, that resource is then queried to see
|
|
|
|
+ // whether Strophe.NS.SPOILER is supported, in which case
|
|
|
|
+ // the spoiler button will appear.
|
|
|
|
+ var presence = $pres({
|
|
|
|
+ 'from': contact_jid+'/phone',
|
|
|
|
+ 'to': 'dummy@localhost'
|
|
|
|
+ });
|
|
|
|
+ _converse.connection._dataRecv(test_utils.createRequest(presence));
|
|
|
|
+ test_utils.openChatBoxFor(_converse, contact_jid);
|
|
|
|
|
|
- var textarea = view.el.querySelector('.chat-textarea');
|
|
|
|
- textarea.value = 'This is the spoiler';
|
|
|
|
- view.keyPressed({
|
|
|
|
- target: textarea,
|
|
|
|
- preventDefault: _.noop,
|
|
|
|
- keyCode: 13
|
|
|
|
|
|
+ test_utils.waitUntilDiscoConfirmed(_converse, contact_jid+'/phone', [], [Strophe.NS.SPOILER]).then(function () {
|
|
|
|
+ var view = _converse.chatboxviews.get(contact_jid);
|
|
|
|
+ spyOn(view, 'onMessageSubmitted').and.callThrough();
|
|
|
|
+ spyOn(_converse.connection, 'send');
|
|
|
|
+
|
|
|
|
+ var spoiler_toggle = view.el.querySelector('.toggle-compose-spoiler');
|
|
|
|
+ spoiler_toggle.click();
|
|
|
|
+
|
|
|
|
+ var textarea = view.el.querySelector('.chat-textarea');
|
|
|
|
+ textarea.value = 'This is the spoiler';
|
|
|
|
+ view.keyPressed({
|
|
|
|
+ target: textarea,
|
|
|
|
+ preventDefault: _.noop,
|
|
|
|
+ keyCode: 13
|
|
|
|
+ });
|
|
|
|
+ expect(view.onMessageSubmitted).toHaveBeenCalled();
|
|
|
|
+
|
|
|
|
+ /* Test the XML stanza
|
|
|
|
+ *
|
|
|
|
+ * <message from="dummy@localhost/resource"
|
|
|
|
+ * to="max.frankfurter@localhost"
|
|
|
|
+ * type="chat"
|
|
|
|
+ * id="4547c38b-d98b-45a5-8f44-b4004dbc335e"
|
|
|
|
+ * xmlns="jabber:client">
|
|
|
|
+ * <body>This is the spoiler</body>
|
|
|
|
+ * <active xmlns="http://jabber.org/protocol/chatstates"/>
|
|
|
|
+ * <spoiler xmlns="urn:xmpp:spoiler:0"/>
|
|
|
|
+ * </message>"
|
|
|
|
+ */
|
|
|
|
+ var stanza = _converse.connection.send.calls.argsFor(0)[0].tree();
|
|
|
|
+ var spoiler_el = stanza.querySelector('spoiler[xmlns="urn:xmpp:spoiler:0"]');
|
|
|
|
+ expect(_.isNull(spoiler_el)).toBeFalsy();
|
|
|
|
+ expect(spoiler_el.textContent).toBe('');
|
|
|
|
+
|
|
|
|
+ var body_el = stanza.querySelector('body');
|
|
|
|
+ expect(body_el.textContent).toBe('This is the spoiler');
|
|
|
|
+
|
|
|
|
+ /* Test the HTML spoiler message */
|
|
|
|
+ var spoiler_msg_el = view.el.querySelector('.chat-msg-content.spoiler');
|
|
|
|
+ expect(spoiler_msg_el.textContent).toBe('This is the spoiler');
|
|
|
|
+ expect(_.includes(spoiler_msg_el.classList, 'collapsed')).toBeTruthy();
|
|
|
|
+
|
|
|
|
+ spoiler_toggle = view.el.querySelector('.toggle-spoiler');
|
|
|
|
+ expect(spoiler_toggle.textContent).toBe('Show hidden message');
|
|
|
|
+ spoiler_toggle.click();
|
|
|
|
+ expect(_.includes(spoiler_msg_el.classList, 'collapsed')).toBeFalsy();
|
|
|
|
+ expect(spoiler_toggle.textContent).toBe('Hide hidden message');
|
|
|
|
+ spoiler_toggle.click();
|
|
|
|
+ expect(_.includes(spoiler_msg_el.classList, 'collapsed')).toBeTruthy();
|
|
|
|
+ done();
|
|
});
|
|
});
|
|
- expect(view.onMessageSubmitted).toHaveBeenCalled();
|
|
|
|
-
|
|
|
|
- /* Test the XML stanza
|
|
|
|
- *
|
|
|
|
- * <message from="dummy@localhost/resource"
|
|
|
|
- * to="max.frankfurter@localhost"
|
|
|
|
- * type="chat"
|
|
|
|
- * id="4547c38b-d98b-45a5-8f44-b4004dbc335e"
|
|
|
|
- * xmlns="jabber:client">
|
|
|
|
- * <body>This is the spoiler</body>
|
|
|
|
- * <active xmlns="http://jabber.org/protocol/chatstates"/>
|
|
|
|
- * <spoiler xmlns="urn:xmpp:spoiler:0"/>
|
|
|
|
- * </message>"
|
|
|
|
- */
|
|
|
|
- var stanza = _converse.connection.send.calls.argsFor(0)[0].tree();
|
|
|
|
- var spoiler_el = stanza.querySelector('spoiler[xmlns="urn:xmpp:spoiler:0"]');
|
|
|
|
- expect(_.isNull(spoiler_el)).toBeFalsy();
|
|
|
|
- expect(spoiler_el.textContent).toBe('');
|
|
|
|
-
|
|
|
|
- var body_el = stanza.querySelector('body');
|
|
|
|
- expect(body_el.textContent).toBe('This is the spoiler');
|
|
|
|
-
|
|
|
|
- /* Test the HTML spoiler message */
|
|
|
|
- var spoiler_msg_el = view.el.querySelector('.chat-msg-content.spoiler');
|
|
|
|
- expect(spoiler_msg_el.textContent).toBe('This is the spoiler');
|
|
|
|
- expect(_.includes(spoiler_msg_el.classList, 'collapsed')).toBeTruthy();
|
|
|
|
-
|
|
|
|
- spoiler_toggle = view.el.querySelector('.toggle-spoiler');
|
|
|
|
- expect(spoiler_toggle.textContent).toBe('Show hidden message');
|
|
|
|
- spoiler_toggle.click();
|
|
|
|
- expect(_.includes(spoiler_msg_el.classList, 'collapsed')).toBeFalsy();
|
|
|
|
- expect(spoiler_toggle.textContent).toBe('Hide hidden message');
|
|
|
|
- spoiler_toggle.click();
|
|
|
|
- expect(_.includes(spoiler_msg_el.classList, 'collapsed')).toBeTruthy();
|
|
|
|
- done();
|
|
|
|
}));
|
|
}));
|
|
|
|
|
|
it("can be sent with a hint",
|
|
it("can be sent with a hint",
|
|
@@ -155,61 +169,72 @@
|
|
test_utils.openControlBox();
|
|
test_utils.openControlBox();
|
|
test_utils.openContactsPanel(_converse);
|
|
test_utils.openContactsPanel(_converse);
|
|
var contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost';
|
|
var contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost';
|
|
- test_utils.openChatBoxFor(_converse, contact_jid);
|
|
|
|
|
|
|
|
- var view = _converse.chatboxviews.get(contact_jid);
|
|
|
|
-
|
|
|
|
- var spoiler_toggle = view.el.querySelector('.toggle-compose-spoiler');
|
|
|
|
- spoiler_toggle.click();
|
|
|
|
-
|
|
|
|
- spyOn(view, 'onMessageSubmitted').and.callThrough();
|
|
|
|
- spyOn(_converse.connection, 'send');
|
|
|
|
-
|
|
|
|
- var textarea = view.el.querySelector('.chat-textarea');
|
|
|
|
- textarea.value = 'This is the spoiler';
|
|
|
|
- var hint_input = view.el.querySelector('.spoiler-hint');
|
|
|
|
- hint_input.value = 'This is the hint';
|
|
|
|
|
|
+ // XXX: We need to send a presence from the contact, so that we
|
|
|
|
+ // have a resource, that resource is then queried to see
|
|
|
|
+ // whether Strophe.NS.SPOILER is supported, in which case
|
|
|
|
+ // the spoiler button will appear.
|
|
|
|
+ var presence = $pres({
|
|
|
|
+ 'from': contact_jid+'/phone',
|
|
|
|
+ 'to': 'dummy@localhost'
|
|
|
|
+ });
|
|
|
|
+ _converse.connection._dataRecv(test_utils.createRequest(presence));
|
|
|
|
+ test_utils.openChatBoxFor(_converse, contact_jid);
|
|
|
|
|
|
- view.keyPressed({
|
|
|
|
- target: textarea,
|
|
|
|
- preventDefault: _.noop,
|
|
|
|
- keyCode: 13
|
|
|
|
|
|
+ test_utils.waitUntilDiscoConfirmed(_converse, contact_jid+'/phone', [], [Strophe.NS.SPOILER]).then(function () {
|
|
|
|
+ var view = _converse.chatboxviews.get(contact_jid);
|
|
|
|
+ var spoiler_toggle = view.el.querySelector('.toggle-compose-spoiler');
|
|
|
|
+ spoiler_toggle.click();
|
|
|
|
+
|
|
|
|
+ spyOn(view, 'onMessageSubmitted').and.callThrough();
|
|
|
|
+ spyOn(_converse.connection, 'send');
|
|
|
|
+
|
|
|
|
+ var textarea = view.el.querySelector('.chat-textarea');
|
|
|
|
+ textarea.value = 'This is the spoiler';
|
|
|
|
+ var hint_input = view.el.querySelector('.spoiler-hint');
|
|
|
|
+ hint_input.value = 'This is the hint';
|
|
|
|
+
|
|
|
|
+ view.keyPressed({
|
|
|
|
+ target: textarea,
|
|
|
|
+ preventDefault: _.noop,
|
|
|
|
+ keyCode: 13
|
|
|
|
+ });
|
|
|
|
+ expect(view.onMessageSubmitted).toHaveBeenCalled();
|
|
|
|
+
|
|
|
|
+ /* Test the XML stanza
|
|
|
|
+ *
|
|
|
|
+ * <message from="dummy@localhost/resource"
|
|
|
|
+ * to="max.frankfurter@localhost"
|
|
|
|
+ * type="chat"
|
|
|
|
+ * id="4547c38b-d98b-45a5-8f44-b4004dbc335e"
|
|
|
|
+ * xmlns="jabber:client">
|
|
|
|
+ * <body>This is the spoiler</body>
|
|
|
|
+ * <active xmlns="http://jabber.org/protocol/chatstates"/>
|
|
|
|
+ * <spoiler xmlns="urn:xmpp:spoiler:0">This is the hint</spoiler>
|
|
|
|
+ * </message>"
|
|
|
|
+ */
|
|
|
|
+ var stanza = _converse.connection.send.calls.argsFor(0)[0].tree();
|
|
|
|
+ var spoiler_el = stanza.querySelector('spoiler[xmlns="urn:xmpp:spoiler:0"]');
|
|
|
|
+ expect(_.isNull(spoiler_el)).toBeFalsy();
|
|
|
|
+ expect(spoiler_el.textContent).toBe('This is the hint');
|
|
|
|
+
|
|
|
|
+ var body_el = stanza.querySelector('body');
|
|
|
|
+ expect(body_el.textContent).toBe('This is the spoiler');
|
|
|
|
+
|
|
|
|
+ /* Test the HTML spoiler message */
|
|
|
|
+ var spoiler_msg_el = view.el.querySelector('.chat-msg-content.spoiler');
|
|
|
|
+ expect(spoiler_msg_el.textContent).toBe('This is the spoiler');
|
|
|
|
+ expect(_.includes(spoiler_msg_el.classList, 'collapsed')).toBeTruthy();
|
|
|
|
+
|
|
|
|
+ spoiler_toggle = view.el.querySelector('.toggle-spoiler');
|
|
|
|
+ expect(spoiler_toggle.textContent).toBe('Show hidden message');
|
|
|
|
+ spoiler_toggle.click();
|
|
|
|
+ expect(_.includes(spoiler_msg_el.classList, 'collapsed')).toBeFalsy();
|
|
|
|
+ expect(spoiler_toggle.textContent).toBe('Hide hidden message');
|
|
|
|
+ spoiler_toggle.click();
|
|
|
|
+ expect(_.includes(spoiler_msg_el.classList, 'collapsed')).toBeTruthy();
|
|
|
|
+ done();
|
|
});
|
|
});
|
|
- expect(view.onMessageSubmitted).toHaveBeenCalled();
|
|
|
|
-
|
|
|
|
- /* Test the XML stanza
|
|
|
|
- *
|
|
|
|
- * <message from="dummy@localhost/resource"
|
|
|
|
- * to="max.frankfurter@localhost"
|
|
|
|
- * type="chat"
|
|
|
|
- * id="4547c38b-d98b-45a5-8f44-b4004dbc335e"
|
|
|
|
- * xmlns="jabber:client">
|
|
|
|
- * <body>This is the spoiler</body>
|
|
|
|
- * <active xmlns="http://jabber.org/protocol/chatstates"/>
|
|
|
|
- * <spoiler xmlns="urn:xmpp:spoiler:0">This is the hint</spoiler>
|
|
|
|
- * </message>"
|
|
|
|
- */
|
|
|
|
- var stanza = _converse.connection.send.calls.argsFor(0)[0].tree();
|
|
|
|
- var spoiler_el = stanza.querySelector('spoiler[xmlns="urn:xmpp:spoiler:0"]');
|
|
|
|
- expect(_.isNull(spoiler_el)).toBeFalsy();
|
|
|
|
- expect(spoiler_el.textContent).toBe('This is the hint');
|
|
|
|
-
|
|
|
|
- var body_el = stanza.querySelector('body');
|
|
|
|
- expect(body_el.textContent).toBe('This is the spoiler');
|
|
|
|
-
|
|
|
|
- /* Test the HTML spoiler message */
|
|
|
|
- var spoiler_msg_el = view.el.querySelector('.chat-msg-content.spoiler');
|
|
|
|
- expect(spoiler_msg_el.textContent).toBe('This is the spoiler');
|
|
|
|
- expect(_.includes(spoiler_msg_el.classList, 'collapsed')).toBeTruthy();
|
|
|
|
-
|
|
|
|
- spoiler_toggle = view.el.querySelector('.toggle-spoiler');
|
|
|
|
- expect(spoiler_toggle.textContent).toBe('Show hidden message');
|
|
|
|
- spoiler_toggle.click();
|
|
|
|
- expect(_.includes(spoiler_msg_el.classList, 'collapsed')).toBeFalsy();
|
|
|
|
- expect(spoiler_toggle.textContent).toBe('Hide hidden message');
|
|
|
|
- spoiler_toggle.click();
|
|
|
|
- expect(_.includes(spoiler_msg_el.classList, 'collapsed')).toBeTruthy();
|
|
|
|
- done();
|
|
|
|
}));
|
|
}));
|
|
});
|
|
});
|
|
}));
|
|
}));
|