async def test_constrain_rooms_skips(self): with OpsDroid() as opsdroid: opsdroid.eventloop = mock.CoroutineMock() skill = await self.getMockSkill() skill = match_regex(r".*")(skill) skill = constraints.constrain_rooms(["#general"])(skill) opsdroid.skills.append(skill) tasks = await opsdroid.parse(Message("Hello", "user", "#general", None)) self.assertEqual(len(tasks), 2) # match_always and the skill
async def test_constrain_rooms_constrains(self): with OpsDroid() as opsdroid: opsdroid.eventloop = mock.CoroutineMock() skill = await self.getMockSkill() skill = match_regex(r'.*')(skill) skill = constraints.constrain_rooms(['#general'])(skill) opsdroid.skills.append(skill) tasks = await opsdroid.parse( Message('user', '#random', None, 'Hello')) self.assertEqual(len(tasks), 1) # Just match_always
async def test_constrain_rooms_inverted(self): with OpsDroid() as opsdroid: skill = await self.getMockSkill() skill = match_regex(r".*")(skill) skill = constraints.constrain_rooms(["#general"], invert=True)(skill) opsdroid.skills.append(skill) tasks = await opsdroid.parse( Message(text="Hello", user="******", target="#general", connector=None) ) self.assertEqual(len(tasks), 3) # Just match_always and match_event
async def test_constrain_rooms_skips(self): with OpsDroid() as opsdroid, mock.patch("opsdroid.parsers.always.parse_always"): skill = await self.getMockSkill() skill = match_regex(r".*")(skill) skill = constraints.constrain_rooms(["#general"])(skill) opsdroid.skills.append(skill) tasks = await opsdroid.parse( Message(text="Hello", user="******", target="#general", connector=None) ) self.assertEqual(len(tasks), 3) # match_always, match_event and the skill
async def test_constrain_rooms_skips(self): with OpsDroid() as opsdroid: opsdroid.eventloop = mock.CoroutineMock() skill = await self.getMockSkill() skill = match_regex(r'.*')(skill) skill = constraints.constrain_rooms(['#general'])(skill) opsdroid.skills.append(skill) tasks = await opsdroid.parse( Message('Hello', 'user', '#general', None) ) self.assertEqual(len(tasks), 2) # match_always and the skill
async def test_constrain_rooms_constrains(self): with OpsDroid() as opsdroid: opsdroid.eventloop = mock.CoroutineMock() skill = await self.getMockSkill() skill = match_regex(r".*")(skill) skill = constraints.constrain_rooms(["#general"])(skill) opsdroid.skills.append(skill) tasks = await opsdroid.parse( Message(text="Hello", user="******", target="#random", connector=None)) self.assertEqual(len(tasks), 1) # Just match_always
async def test_parse_event_with_constraint(self): with OpsDroid() as opsdroid: opsdroid.run_skill = amock.CoroutineMock() mock_skill = await self.getMockSkill() mock_skill = match_event(events.JoinRoom)(mock_skill) mock_skill = constrain_rooms(["#general"])(mock_skill) opsdroid.skills.append(mock_skill) mock_connector = amock.CoroutineMock() mock_connector.lookup_target = amock.Mock(return_value="some_room_id") message = events.JoinRoom( user="******", target="some_room_id", connector=mock_connector ) await opsdroid.parse(message) self.assertTrue(opsdroid.run_skill.called)
def __init__(self, opsdroid, config): super(EventManagerAck, self).__init__(opsdroid, config) self.EventManagerAck = constrain_rooms( self.config.get("escalation_rooms"))