test: improvements for the helpers classes:
- simplification for retrieving the sent messages - an expected bridge call which is already set can no more be overwritten with new arguments for the same method name. The new arguments are stored in a FIFO list instead, and each call of the method also registers the arguments for the next call.
This commit is contained in:
parent
30dfdf1025
commit
cf8f9330b4
1 changed files with 105 additions and 40 deletions
|
|
@ -21,7 +21,7 @@
|
|||
""" Helpers class for plugin dependencies """
|
||||
|
||||
from constants import Const
|
||||
from sat.plugins.plugin_xep_0045 import XEP_0045
|
||||
from sat.plugins import plugin_xep_0045
|
||||
from twisted.internet import defer
|
||||
from wokkel.muc import Room, User
|
||||
|
||||
|
|
@ -33,6 +33,12 @@ class FakeMUCClient(object):
|
|||
self.joined_rooms = {}
|
||||
|
||||
def join(self, roomJID, nick, profile):
|
||||
"""
|
||||
@param roomJID: the room JID
|
||||
@param nick: nick to be used in the room
|
||||
@param profile: the profile of the user joining the room
|
||||
@return: the deferred joined wokkel.muc.Room instance
|
||||
"""
|
||||
roster = {}
|
||||
|
||||
# ask the other profiles to fill our roster
|
||||
|
|
@ -69,10 +75,30 @@ class FakeMUCClient(object):
|
|||
except (AttributeError, KeyError):
|
||||
pass
|
||||
|
||||
return room
|
||||
return defer.succeed(room)
|
||||
|
||||
def leave(self, roomJID, profile):
|
||||
"""
|
||||
@param roomJID: the room JID
|
||||
@param profile: the profile of the user joining the room
|
||||
@return: a dummy deferred
|
||||
"""
|
||||
room = self.joined_rooms[roomJID.userhost()]
|
||||
# remove ourself from the other rosters
|
||||
for i in xrange(0, len(Const.PROFILE)):
|
||||
other_profile = Const.PROFILE[i]
|
||||
if other_profile == profile:
|
||||
continue
|
||||
try:
|
||||
other_room = self.plugin_parent.clients[other_profile].joined_rooms[roomJID.userhost()]
|
||||
del other_room.roster[room.nick]
|
||||
except (AttributeError, KeyError):
|
||||
pass
|
||||
del self.joined_rooms[roomJID.userhost()]
|
||||
return defer.Deferred()
|
||||
|
||||
|
||||
class FakeXEP_0045(XEP_0045):
|
||||
class FakeXEP_0045(plugin_xep_0045.XEP_0045):
|
||||
|
||||
def __init__(self, host):
|
||||
self.host = host
|
||||
|
|
@ -81,22 +107,50 @@ class FakeXEP_0045(XEP_0045):
|
|||
self.clients[profile] = FakeMUCClient(self)
|
||||
|
||||
def join(self, room_jid, nick, options={}, profile_key='@DEFAULT@'):
|
||||
"""
|
||||
@param roomJID: the room JID
|
||||
@param nick: nick to be used in the room
|
||||
@param options: ignore
|
||||
@param profile_key: the profile of the user joining the room
|
||||
@return: the deferred joined wokkel.muc.Room instance or None
|
||||
"""
|
||||
profile = self.host.memory.getProfileName(profile_key)
|
||||
room_jid_s = room_jid.userhost()
|
||||
if room_jid_s in self.clients[profile].joined_rooms:
|
||||
return defer.succeed(None)
|
||||
room = self.clients[profile].join(room_jid, nick, profile)
|
||||
return defer.succeed(room)
|
||||
return room
|
||||
|
||||
def joinRoom(self, muc_index, user_index):
|
||||
"""Called by tests
|
||||
@return: the nickname of the user in the joined room"""
|
||||
muc = Const.MUC[muc_index]
|
||||
@return: the nickname of the user who joined room"""
|
||||
muc_jid = Const.MUC[muc_index]
|
||||
nick = Const.JID[user_index].user
|
||||
profile = Const.PROFILE[user_index]
|
||||
self.join(muc, nick, profile_key=profile)
|
||||
self.join(muc_jid, nick, profile_key=profile)
|
||||
return self.getNick(muc_index, user_index)
|
||||
|
||||
def leave(self, room_jid, profile_key='@DEFAULT@'):
|
||||
"""
|
||||
@param roomJID: the room JID
|
||||
@param profile_key: the profile of the user leaving the room
|
||||
@return: a dummy deferred
|
||||
"""
|
||||
profile = self.host.memory.getProfileName(profile_key)
|
||||
room_jid_s = room_jid.userhost()
|
||||
if room_jid_s not in self.clients[profile].joined_rooms:
|
||||
raise plugin_xep_0045.UnknownRoom("This room has not been joined")
|
||||
return self.clients[profile].leave(room_jid, profile)
|
||||
|
||||
def leaveRoom(self, muc_index, user_index):
|
||||
"""Called by tests
|
||||
@return: the nickname of the user who left the room"""
|
||||
muc_jid = Const.MUC[muc_index]
|
||||
nick = self.getNick(muc_index, user_index)
|
||||
profile = Const.PROFILE[user_index]
|
||||
self.leave(muc_jid, profile_key=profile)
|
||||
return nick
|
||||
|
||||
def getRoom(self, muc_index, user_index):
|
||||
"""Called by tests
|
||||
@return: a wokkel.muc.Room instance"""
|
||||
|
|
|
|||
Loading…
Reference in a new issue