diff --git a/slackclient/_channel.py b/slackclient/_channel.py index cc642c1d3..7723c17f6 100644 --- a/slackclient/_channel.py +++ b/slackclient/_channel.py @@ -11,6 +11,9 @@ def __eq__(self, compare_str): else: return False + def __hash__(self): + return hash(self.id) + def __str__(self): data = "" for key in list(self.__dict__.keys()): diff --git a/slackclient/_im.py b/slackclient/_im.py index b240339f5..21b0a4c65 100644 --- a/slackclient/_im.py +++ b/slackclient/_im.py @@ -10,6 +10,9 @@ def __eq__(self, compare_str): else: return False + def __hash__(self): + return hash(self.id) + def __str__(self): data = "" for key in list(self.__dict__.keys()): diff --git a/slackclient/_server.py b/slackclient/_server.py index dc5f7b2ba..42b782250 100644 --- a/slackclient/_server.py +++ b/slackclient/_server.py @@ -31,6 +31,9 @@ def __eq__(self, compare_str): else: return False + def __hash__(self): + return hash(self.token) + def __str__(self): data = "" for key in list(self.__dict__.keys()): diff --git a/slackclient/_user.py b/slackclient/_user.py index c4b620912..274bddbe2 100644 --- a/slackclient/_user.py +++ b/slackclient/_user.py @@ -12,6 +12,9 @@ def __eq__(self, compare_str): else: return False + def __hash__(self): + return hash(self.id) + def __str__(self): data = "" for key in list(self.__dict__.keys()): diff --git a/tests/test_channel.py b/tests/test_channel.py index 544577ea9..a4604dd97 100644 --- a/tests/test_channel.py +++ b/tests/test_channel.py @@ -16,6 +16,16 @@ def test_channel_eq(channel): assert channel == 'C12345678' assert (channel == 'foo') is False +def test_channel_is_hashable(channel): + channel = Channel( + 'test-server', + 'test-channel', + 'C12345678', + ) + channel_map = {channel: channel.id} + assert channel_map[channel] == 'C12345678' + assert (channel_map[channel] == 'foo') is False + @pytest.mark.xfail def test_channel_send_message(channel): channel.send_message('hi') diff --git a/tests/test_server.py b/tests/test_server.py index 599af2127..2b709c467 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -16,6 +16,12 @@ def test_Server(server): assert type(server) == Server +def test_Server_is_hashable(server): + server_map = {server: server.token} + assert server_map[server] == 'xoxp-1234123412341234-12341234-1234' + assert (server_map[server] == 'foo') is False + + def test_Server_parse_channel_data(server, login_fixture): server.parse_channel_data(login_fixture["channels"]) assert type(server.channels.find('general')) == Channel