Skip to content

Commit e13d3a8

Browse files
RoachDon Goodman-Wilson
authored andcommitted
Updated RTM user parsing to use a dict instead of a list. Updated tests to add additional coverage. (#149)
1 parent 15aa80b commit e13d3a8

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

slackclient/_server.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from slackclient._slackrequest import SlackRequest
22
from slackclient._channel import Channel
33
from slackclient._user import User
4-
from slackclient._util import SearchList
4+
from slackclient._util import SearchList, SearchDict
55
from ssl import SSLError
66

77
from websocket import create_connection
@@ -20,7 +20,7 @@ def __init__(self, token, connect=True):
2020
self.domain = None
2121
self.login_data = None
2222
self.websocket = None
23-
self.users = SearchList()
23+
self.users = SearchDict()
2424
self.channels = SearchList()
2525
self.connected = False
2626
self.ws_url = None
@@ -149,8 +149,7 @@ def websocket_safe_read(self):
149149
return data.rstrip()
150150

151151
def attach_user(self, name, channel_id, real_name, tz):
152-
if self.users.find(channel_id) is None:
153-
self.users.append(User(self, name, channel_id, real_name, tz))
152+
self.users.update({name: User(self, name, channel_id, real_name, tz)})
154153

155154
def attach_channel(self, name, channel_id, members=None):
156155
if members is None:

slackclient/_util.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,9 @@ def find(self, name):
1515
return items
1616
else:
1717
return None
18+
19+
20+
class SearchDict(dict):
21+
22+
def find(self, name):
23+
return self.get(name)

tests/test_server.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ def test_Server_parse_channel_data(server, login_fixture):
2929

3030
def test_Server_parse_user_data(server, login_fixture):
3131
server.parse_user_data(login_fixture["users"])
32-
assert type(server.users.find('fakeuser')) == User
32+
fakeuser = server.users.find('fakeuser')
33+
assert type(fakeuser) == User
34+
assert fakeuser == "fakeuser"
35+
assert fakeuser != "someotheruser"
3336

3437

3538
def test_Server_cantconnect(server):

0 commit comments

Comments
 (0)