Jelajahi Sumber

Fix failing tests

JC Brand 7 tahun lalu
induk
melakukan
ce849aaffc
4 mengubah file dengan 33 tambahan dan 22 penghapusan
  1. 2 2
      spec/protocol.js
  2. 28 14
      spec/roster.js
  3. 2 2
      src/converse-core.js
  4. 1 4
      src/converse-rosterview.js

+ 2 - 2
spec/protocol.js

@@ -69,7 +69,7 @@
                     var cbview = _converse.chatboxviews.get('controlbox');
 
                     spyOn(_converse.roster, "addAndSubscribe").and.callThrough();
-                    spyOn(_converse.roster, "addContact").and.callThrough();
+                    spyOn(_converse.roster, "addContactToRoster").and.callThrough();
                     spyOn(_converse.roster, "sendContactAddIQ").and.callThrough();
                     spyOn(_converse.api.vcard, "get").and.callThrough();
 
@@ -100,7 +100,7 @@
                     */
                     expect(modal.addContactFromForm).toHaveBeenCalled();
                     expect(_converse.roster.addAndSubscribe).toHaveBeenCalled();
-                    expect(_converse.roster.addContact).toHaveBeenCalled();
+                    expect(_converse.roster.addContactToRoster).toHaveBeenCalled();
 
                     /* _converse request consists of sending an IQ
                      * stanza of type='set' containing a <query/> element qualified by

+ 28 - 14
spec/roster.js

@@ -584,26 +584,33 @@
                 var name = mock.pend_names[0];
                 var jid = name.replace(/ /g,'.').toLowerCase() + '@localhost';
                 var contact = _converse.roster.get(jid);
-
+                var sent_IQ;
                 spyOn(window, 'confirm').and.returnValue(true);
                 spyOn(contact, 'unauthorize').and.callFake(function () { return contact; });
-                spyOn(contact, 'removeFromRoster');
-                spyOn(_converse.connection, 'sendIQ').and.callFake(function (iq, callback) {
-                    if (typeof callback === "function") { return callback(); }
-                });
+                spyOn(contact, 'removeFromRoster').and.callThrough();
                 test_utils.waitUntil(function () {
-                        return $(_converse.rosterview.el).find(".pending-contact-name:contains('"+name+"')").length;
+                    return $(_converse.rosterview.el).find(".pending-contact-name:contains('"+name+"')").length;
                 }, 700).then(function () {
+
+                    var sendIQ = _converse.connection.sendIQ;
+                    spyOn(_converse.connection, 'sendIQ').and.callFake(function (iq, callback, errback) {
+                        sent_IQ = iq;
+                        callback();
+                    });
                     $(_converse.rosterview.el).find(".pending-contact-name:contains('"+name+"')")
                         .parent().siblings('.remove-xmpp-contact')[0].click();
                     return test_utils.waitUntil(function () {
                         return $(_converse.rosterview.el).find(".pending-contact-name:contains('"+name+"')").length === 0
-                    }, 700)
+                    }, 1000)
                 }).then(function () {
                     expect(window.confirm).toHaveBeenCalled();
-                    expect(_converse.connection.sendIQ).toHaveBeenCalled();
                     expect(contact.removeFromRoster).toHaveBeenCalled();
-                    expect(_converse.connection.sendIQ).toHaveBeenCalled();
+                    expect(sent_IQ.toLocaleString()).toBe(
+                        "<iq type='set' xmlns='jabber:client'>"+
+                            "<query xmlns='jabber:iq:roster'>"+
+                                "<item jid='suleyman.van.beusichem@localhost' subscription='remove'/>"+
+                            "</query>"+
+                        "</iq>");
                     done();
                 });
             }));
@@ -771,6 +778,7 @@
                     null, ['rosterGroupsFetched'], {},
                     function (done, _converse) {
 
+                var sent_IQ;
                 _addContacts(_converse);
                 test_utils.waitUntil(function () {
                     return $(_converse.rosterview.el).find('li').length;
@@ -779,15 +787,21 @@
                     var jid = name.replace(/ /g,'.').toLowerCase() + '@localhost';
                     var contact = _converse.roster.get(jid);
                     spyOn(window, 'confirm').and.returnValue(true);
-                    spyOn(contact, 'removeFromRoster');
-                    spyOn(_converse.connection, 'sendIQ').and.callFake(function (iq, callback) {
-                        if (typeof callback === "function") { return callback(); }
+                    spyOn(contact, 'removeFromRoster').and.callThrough();
+
+                    var sendIQ = _converse.connection.sendIQ;
+                    spyOn(_converse.connection, 'sendIQ').and.callFake(function (iq, callback, errback) {
+                        sent_IQ = iq;
+                        callback();
                     });
                     $(_converse.rosterview.el).find(".open-chat:contains('"+name+"')")
                         .parent().find('.remove-xmpp-contact')[0].click();
 
                     expect(window.confirm).toHaveBeenCalled();
-                    expect(_converse.connection.sendIQ).toHaveBeenCalled();
+                    expect(sent_IQ.toLocaleString()).toBe(
+                        "<iq type='set' xmlns='jabber:client'>"+
+                            "<query xmlns='jabber:iq:roster'><item jid='max.frankfurter@localhost' subscription='remove'/></query>"+
+                        "</iq>");
                     expect(contact.removeFromRoster).toHaveBeenCalled();
                     expect($(_converse.rosterview.el).find(".open-chat:contains('"+name+"')").length).toEqual(0);
                     done();
@@ -812,7 +826,7 @@
                     return $(_converse.rosterview.el).find('.roster-group:visible li').length;
                 }, 700).then(function () {
                     spyOn(window, 'confirm').and.returnValue(true);
-                    spyOn(contact, 'removeFromRoster');
+                    spyOn(contact, 'removeFromRoster').and.callThrough();
                     spyOn(_converse.connection, 'sendIQ').and.callFake(function (iq, callback) {
                         if (typeof callback === "function") { return callback(); }
                     });

+ 2 - 2
src/converse-core.js

@@ -1034,7 +1034,7 @@
                 }
             },
 
-            removeFromRoster (callback) {
+            removeFromRoster (callback, errback) {
                 /* Instruct the XMPP server to remove this contact from our roster
                  * Parameters:
                  *   (Function) callback
@@ -1042,7 +1042,7 @@
                 const iq = $iq({type: 'set'})
                     .c('query', {xmlns: Strophe.NS.ROSTER})
                     .c('item', {jid: this.get('jid'), subscription: "remove"});
-                _converse.connection.sendIQ(iq, callback, callback);
+                _converse.connection.sendIQ(iq, callback, errback);
                 return this;
             }
         });

+ 1 - 4
src/converse-rosterview.js

@@ -495,10 +495,7 @@
                     if (!_converse.allow_contact_removal) { return; }
                     const result = confirm(__("Are you sure you want to remove this contact?"));
                     if (result === true) {
-                        const iq = $iq({type: 'set'})
-                            .c('query', {xmlns: Strophe.NS.ROSTER})
-                            .c('item', {jid: this.model.get('jid'), subscription: "remove"});
-                        _converse.connection.sendIQ(iq,
+                        this.model.removeFromRoster(
                             (iq) => {
                                 this.model.destroy();
                                 this.remove();