Refactor other tests. All tests pass now again. updates #307
This commit is contained in:
parent
405351058a
commit
6c31f76406
@ -2523,9 +2523,10 @@
|
||||
},
|
||||
|
||||
leave: function(exit_msg) {
|
||||
var presenceid = converse.connection.getUniqueId();
|
||||
var presence = $pres({
|
||||
type: "unavailable",
|
||||
id: converse.connection.getUniqueId(),
|
||||
id: presenceid,
|
||||
from: converse.connection.jid,
|
||||
to: this.getRoomJID()
|
||||
});
|
||||
@ -2772,10 +2773,10 @@
|
||||
return this.scrollDown();
|
||||
},
|
||||
|
||||
showErrorMessage: function ($error, room) {
|
||||
showErrorMessage: function ($error) {
|
||||
// We didn't enter the room, so we must remove it from the MUC
|
||||
// add-on
|
||||
delete converse.connection.muc[room.name];
|
||||
delete converse.connection.muc[this.model.get('jid')]; // XXX: Still needed?
|
||||
if ($error.attr('type') == 'auth') {
|
||||
if ($error.find('not-authorized').length) {
|
||||
this.renderPasswordForm();
|
||||
@ -2810,7 +2811,7 @@
|
||||
var nick = this.model.get('nick');
|
||||
if ($presence.attr('type') === 'error') {
|
||||
this.model.set('connected', false);
|
||||
this.showErrorMessage($presence.find('error'), room);
|
||||
this.showErrorMessage($presence.find('error'));
|
||||
} else {
|
||||
is_self = ($presence.find("status[code='110']").length) ||
|
||||
($presence.attr('from') == this.model.get('id')+'/'+Strophe.escapeNode(nick));
|
||||
|
@ -23,30 +23,54 @@
|
||||
|
||||
it("shows users currently present in the room", $.proxy(function () {
|
||||
test_utils.openChatRoom('lounge', 'localhost', 'dummy');
|
||||
var chatroomview = this.chatboxviews.get('lounge@localhost'),
|
||||
$participant_list;
|
||||
var roster = {}, room = {}, i;
|
||||
for (i=0; i<mock.chatroom_names.length-1; i++) {
|
||||
roster[mock.chatroom_names[i]] = {};
|
||||
chatroomview.onChatRoomRoster(roster, room);
|
||||
$participant_list = chatroomview.$el.find('.participant-list');
|
||||
expect($participant_list.find('li').length).toBe(1+i);
|
||||
expect($($participant_list.find('li')[i]).text()).toBe(mock.chatroom_names[i]);
|
||||
var name;
|
||||
var view = this.chatboxviews.get('lounge@localhost'),
|
||||
$participants = view.$('.participant-list');
|
||||
spyOn(view, 'onChatRoomPresence').andCallThrough();
|
||||
var 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({
|
||||
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',
|
||||
role: role
|
||||
}).up()
|
||||
.c('status').attrs({code:'110'}).nodeTree;
|
||||
|
||||
this.connection._dataRecv(test_utils.createRequest(presence));
|
||||
expect(view.onChatRoomPresence).toHaveBeenCalled();
|
||||
expect($participants.find('li').length).toBe(1+i);
|
||||
expect($($participants.find('li')[i]).text()).toBe(mock.chatroom_names[i]);
|
||||
expect($($participants.find('li')[i]).hasClass('moderator')).toBe(role === "moderator");
|
||||
}
|
||||
roster[converse.bare_jid] = {};
|
||||
chatroomview.onChatRoomRoster(roster, room);
|
||||
}, converse));
|
||||
|
||||
it("indicates moderators by means of a special css class and tooltip", $.proxy(function () {
|
||||
test_utils.openChatRoom('lounge', 'localhost', 'dummy');
|
||||
var chatroomview = this.chatboxviews.get('lounge@localhost');
|
||||
var roster = {}, idx = mock.chatroom_names.length-1;
|
||||
roster[mock.chatroom_names[idx]] = {};
|
||||
roster[mock.chatroom_names[idx]].role = 'moderator';
|
||||
chatroomview.onChatRoomRoster(roster, {});
|
||||
var occupant = chatroomview.$el.find('.participant-list').find('li');
|
||||
var view = this.chatboxviews.get('lounge@localhost');
|
||||
|
||||
var presence = $pres({
|
||||
to:'dummy@localhost/pda',
|
||||
from:'lounge@localhost/moderatorman'
|
||||
}).c('x').attrs({xmlns:'http://jabber.org/protocol/muc#user'})
|
||||
.c('item').attrs({
|
||||
affiliation: 'admin',
|
||||
jid: 'dummy@localhost/pda',
|
||||
role: 'moderator',
|
||||
}).up()
|
||||
.c('status').attrs({code:'110'}).nodeTree;
|
||||
|
||||
this.connection._dataRecv(test_utils.createRequest(presence));
|
||||
var occupant = view.$el.find('.participant-list').find('li');
|
||||
expect(occupant.length).toBe(1);
|
||||
expect($(occupant).text()).toBe(mock.chatroom_names[idx]);
|
||||
expect($(occupant).text()).toBe("moderatorman");
|
||||
expect($(occupant).attr('class')).toBe('moderator');
|
||||
expect($(occupant).attr('title')).toBe('This user is a moderator');
|
||||
}, converse));
|
||||
@ -371,7 +395,7 @@
|
||||
var view = this.chatboxviews.get('lounge@localhost'), chatroom = view.model, $el;
|
||||
spyOn(view, 'close').andCallThrough();
|
||||
spyOn(converse, 'emit');
|
||||
spyOn(converse.connection.muc, 'leave');
|
||||
spyOn(view, 'leave');
|
||||
view.delegateEvents(); // We need to rebind all events otherwise our spy won't be called
|
||||
runs(function () {
|
||||
view.$el.find('.close-chatbox-button').click();
|
||||
@ -379,7 +403,7 @@
|
||||
waits(50);
|
||||
runs(function () {
|
||||
expect(view.close).toHaveBeenCalled();
|
||||
expect(this.connection.muc.leave).toHaveBeenCalled();
|
||||
expect(view.leave).toHaveBeenCalled();
|
||||
expect(this.emit).toHaveBeenCalledWith('chatBoxClosed', jasmine.any(Object));
|
||||
}.bind(converse));
|
||||
}, converse));
|
||||
|
@ -33,6 +33,15 @@
|
||||
mock.chatroom_names = [
|
||||
'Dyon van de Wege', 'Thomas Kalb', 'Dirk Theissen', 'Felix Hofmann', 'Ka Lek', 'Anne Ebersbacher'
|
||||
];
|
||||
// TODO: need to also test other roles and affiliations
|
||||
mock.chatroom_roles = {
|
||||
'Anne Ebersbacher': { affiliation: "owner", role: "moderator" },
|
||||
'Dirk Theissen': { affiliation: "admin", role: "moderator" },
|
||||
'Dyon van de Wege': { affiliation: "member", role: "participant" },
|
||||
'Felix Hofmann': { affiliation: "member", role: "participant" },
|
||||
'Ka Lek': { affiliation: "member", role: "participant" },
|
||||
'Thomas Kalb': { affiliation: "member", role: "participant" }
|
||||
};
|
||||
|
||||
mock.event = {
|
||||
'preventDefault': function () {}
|
||||
|
Loading…
Reference in New Issue
Block a user