2323import sys
2424import unittest
2525from datetime import datetime
26-
2726import functools
2827
29- from telegram import MessageEntity
30-
3128sys .path .append ('.' )
3229
33- from telegram import Message , User , Chat
30+ from telegram import Message , User , Chat , MessageEntity
3431from telegram .ext import Filters
3532from tests .base import BaseTest
3633
@@ -40,6 +37,7 @@ class FiltersTest(BaseTest, unittest.TestCase):
4037
4138 def setUp (self ):
4239 self .message = Message (0 , User (0 , "Testuser" ), datetime .now (), Chat (0 , 'private' ))
40+ self .e = functools .partial (MessageEntity , offset = 0 , length = 0 )
4341
4442 def test_filters_text (self ):
4543 self .message .text = 'test'
@@ -155,23 +153,19 @@ def test_filters_status_update(self):
155153 self .message .pinned_message = None
156154
157155 def test_entities_filter (self ):
158- e = functools .partial (MessageEntity , offset = 0 , length = 0 )
159-
160- self .message .entities = [e (MessageEntity .MENTION )]
156+ self .message .entities = [self .e (MessageEntity .MENTION )]
161157 self .assertTrue (Filters .entity (MessageEntity .MENTION )(self .message ))
162158
163159 self .message .entities = []
164160 self .assertFalse (Filters .entity (MessageEntity .MENTION )(self .message ))
165161
166- self .message .entities = [e (MessageEntity .BOLD )]
162+ self .message .entities = [self . e (MessageEntity .BOLD )]
167163 self .assertFalse (Filters .entity (MessageEntity .MENTION )(self .message ))
168164
169- self .message .entities = [e (MessageEntity .BOLD ), e (MessageEntity .MENTION )]
165+ self .message .entities = [self . e (MessageEntity .BOLD ), self . e (MessageEntity .MENTION )]
170166 self .assertTrue (Filters .entity (MessageEntity .MENTION )(self .message ))
171167
172168 def test_and_filters (self ):
173- # For now just test with forwarded as that's the only one that makes sense
174- # That'll change when we get a entities filter
175169 self .message .text = 'test'
176170 self .message .forward_date = True
177171 self .assertTrue ((Filters .text & Filters .forwarded )(self .message ))
@@ -181,9 +175,16 @@ def test_and_filters(self):
181175 self .message .forward_date = None
182176 self .assertFalse ((Filters .text & Filters .forwarded )(self .message ))
183177
178+ self .message .text = 'test'
179+ self .message .forward_date = True
180+ self .message .entities = [self .e (MessageEntity .MENTION )]
181+ self .assertTrue ((Filters .text & Filters .forwarded & Filters .entity (MessageEntity .MENTION ))(
182+ self .message ))
183+ self .message .entities = [self .e (MessageEntity .BOLD )]
184+ self .assertFalse ((Filters .text & Filters .forwarded & Filters .entity (MessageEntity .MENTION )
185+ )(self .message ))
186+
184187 def test_or_filters (self ):
185- # For now just test with forwarded as that's the only one that makes sense
186- # That'll change when we get a entities filter
187188 self .message .text = 'test'
188189 self .assertTrue ((Filters .text | Filters .status_update )(self .message ))
189190 self .message .group_chat_created = True
@@ -193,6 +194,18 @@ def test_or_filters(self):
193194 self .message .group_chat_created = False
194195 self .assertFalse ((Filters .text | Filters .status_update )(self .message ))
195196
197+ def test_and_or_filters (self ):
198+ self .message .text = 'test'
199+ self .message .forward_date = True
200+ self .assertTrue ((Filters .text & (Filters .forwarded | Filters .entity (MessageEntity .MENTION ))
201+ )(self .message ))
202+ self .message .forward_date = False
203+ self .assertFalse ((Filters .text & (Filters .forwarded | Filters .entity (MessageEntity .MENTION )
204+ ))(self .message ))
205+ self .message .entities = [self .e (MessageEntity .MENTION )]
206+ self .assertTrue ((Filters .text & (Filters .forwarded | Filters .entity (MessageEntity .MENTION ))
207+ )(self .message ))
208+
196209
197210if __name__ == '__main__' :
198211 unittest .main ()
0 commit comments