Explorar el Código

Also test for users leaving a room. updates #307

JC Brand hace 10 años
padre
commit
79a5121219
Se han modificado 1 ficheros con 26 adiciones y 5 borrados
  1. 26 5
      spec/chatroom.js

+ 26 - 5
spec/chatroom.js

@@ -27,19 +27,18 @@
                 var view = this.chatboxviews.get('lounge@localhost'),
                     $participants = view.$('.participant-list');
                 spyOn(view, 'onChatRoomPresence').andCallThrough();
-                var room = {}, i, role;
+                var presence, room = {}, i, role;
                 for (i=0; i<mock.chatroom_names.length; i++) {
                     name = mock.chatroom_names[i];
-                    console.log(name);
                     role = mock.chatroom_roles[name].role;
                     // See example 21 http://xmpp.org/extensions/xep-0045.html#enter-pres
-                    var presence = $pres({
+                    presence = $pres({
                             to:'dummy@localhost/pda',
                             from:'lounge@localhost/'+name
                     }).c('x').attrs({xmlns:'http://jabber.org/protocol/muc#user'})
                     .c('item').attrs({
                         affiliation: mock.chatroom_roles[name].affiliation,
-                        jid: 'dummy@localhost/pda',
+                        jid: name.replace(/ /g,'.').toLowerCase() + '@localhost',
                         role: role
                     }).up()
                     .c('status').attrs({code:'110'}).nodeTree;
@@ -50,6 +49,28 @@
                     expect($($participants.find('li')[i]).text()).toBe(mock.chatroom_names[i]);
                     expect($($participants.find('li')[i]).hasClass('moderator')).toBe(role === "moderator");
                 }
+
+                // Test users leaving the room
+                // http://xmpp.org/extensions/xep-0045.html#exit
+                for (i=mock.chatroom_names.length-1; i>-1; i--) {
+                    name = mock.chatroom_names[i];
+                    console.log(name);
+                    role = mock.chatroom_roles[name].role;
+                    // See example 21 http://xmpp.org/extensions/xep-0045.html#enter-pres
+                    presence = $pres({
+                        to:'dummy@localhost/pda',
+                        from:'lounge@localhost/'+name,
+                        type: 'unavailable'
+                    }).c('x').attrs({xmlns:'http://jabber.org/protocol/muc#user'})
+                    .c('item').attrs({
+                        affiliation: mock.chatroom_roles[name].affiliation,
+                        jid: name.replace(/ /g,'.').toLowerCase() + '@localhost',
+                        role: 'none'
+                    }).nodeTree;
+                    this.connection._dataRecv(test_utils.createRequest(presence));
+                    expect(view.onChatRoomPresence).toHaveBeenCalled();
+                    expect($participants.find('li').length).toBe(i);
+                }
             }, converse));
 
             it("indicates moderators by means of a special css class and tooltip", $.proxy(function () {
@@ -62,7 +83,7 @@
                 }).c('x').attrs({xmlns:'http://jabber.org/protocol/muc#user'})
                 .c('item').attrs({
                     affiliation: 'admin',
-                    jid: 'dummy@localhost/pda',
+                    jid: name.replace(/ /g,'.').toLowerCase() + '@localhost',
                     role: 'moderator',
                 }).up()
                 .c('status').attrs({code:'110'}).nodeTree;