async def test_parse_luisai_low_score(self): with OpsDroid() as opsdroid: opsdroid.config["parsers"] = [{ "name": "luisai", "appid": "test", "appkey": "test", "verbose": True, "min-score": 0.95, }] mock_skill = amock.CoroutineMock() match_luisai_intent("Calendar.Add")(mock_skill) mock_connector = amock.CoroutineMock() message = Message("schedule meeting", "user", "default", mock_connector) with amock.patch.object(luisai, "call_luisai") as mocked_call_luisai: mocked_call_luisai.return_value = { "query": "schedule meeting", "topScoringIntent": { "intent": "Calendar.Add", "score": 0.900492251, }, "intents": [{ "intent": "Calendar.Add", "score": 0.900492251 }], "entities": [], } await luisai.parse_luisai(opsdroid, opsdroid.skills, message, opsdroid.config["parsers"][0]) self.assertFalse(mock_skill.called)
async def test_parse_luisai_low_score(self): with OpsDroid() as opsdroid: opsdroid.config['parsers'] = [{ 'name': 'luisai', 'appid': 'test', 'appkey': 'test', 'verbose': True, 'min-score': 0.95 }] mock_skill = amock.CoroutineMock() match_luisai_intent('Calendar.Add')(mock_skill) mock_connector = amock.CoroutineMock() message = Message("schedule meeting", "user", "default", mock_connector) with amock.patch.object(luisai, 'call_luisai') as \ mocked_call_luisai: mocked_call_luisai.return_value = { "query": "schedule meeting", "topScoringIntent": { "intent": "Calendar.Add", "score": 0.900492251 }, "intents": [{ "intent": "Calendar.Add", "score": 0.900492251 }], "entities": [] } await luisai.parse_luisai(opsdroid, opsdroid.skills, message, opsdroid.config['parsers'][0]) self.assertFalse(mock_skill.called)
async def test_parse_luisai_failure(self): with OpsDroid() as opsdroid: opsdroid.config["parsers"] = [{ "name": "luisai", "appid": "test", "appkey": "test", "verbose": True }] mock_skill = amock.CoroutineMock() match_luisai_intent("Calendar.Add")(mock_skill) mock_connector = amock.CoroutineMock() message = Message( text="schedule meeting", user="******", target="default", connector=mock_connector, ) with amock.patch.object(luisai, "call_luisai") as mocked_call_luisai: mocked_call_luisai.return_value = {"statusCode": 401} skills = await luisai.parse_luisai( opsdroid, opsdroid.skills, message, opsdroid.config["parsers"][0]) self.assertFalse(skills)
async def test_parse_luisai_raise_ClientOSError(self): with OpsDroid() as opsdroid: opsdroid.config["parsers"] = [{ "name": "luisai", "appid": "test", "appkey": "test", "verbose": True, "min-score": 0.95, }] mock_skill = amock.CoroutineMock() match_luisai_intent("Calendar.Add")(mock_skill) mock_connector = amock.CoroutineMock() message = Message( text="schedule meeting", user="******", target="default", connector=mock_connector, ) with amock.patch.object(luisai, "call_luisai") as mocked_call: mocked_call.side_effect = ClientOSError() await luisai.parse_luisai(opsdroid, opsdroid.skills, message, opsdroid.config["parsers"][0]) self.assertFalse(mock_skill.called) self.assertTrue(mocked_call.called)
async def test_parse_luisai(self): with OpsDroid() as opsdroid: opsdroid.config["parsers"] = [{"name": "luisai"}] luisai_intent = "" skill = amock.CoroutineMock() mock_connector = Connector({}, opsdroid=opsdroid) match_luisai_intent(luisai_intent)(skill) message = Message("Hello world", "user", "default", mock_connector) with amock.patch('opsdroid.parsers.luisai.parse_luisai'): tasks = await opsdroid.parse(message) self.assertEqual(len(tasks), 1) for task in tasks: await task
async def test_parse_luisai(self): with OpsDroid() as opsdroid: opsdroid.config["parsers"] = [{"name": "luisai"}] luisai_intent = "" skill = amock.CoroutineMock() mock_connector = Connector({}) match_luisai_intent(luisai_intent)(skill) message = Message("Hello world", "user", "default", mock_connector) with amock.patch('opsdroid.parsers.luisai.parse_luisai'): tasks = await opsdroid.parse(message) self.assertEqual(len(tasks), 1) for task in tasks: await task
async def test_match_luisai(opsdroid): intent = "myIntent" decorator = matchers.match_luisai_intent(intent) opsdroid.skills.append(decorator(await get_mock_skill())) assert len(opsdroid.skills) == 1 assert opsdroid.skills[0].matchers[0]["luisai_intent"] == intent assert asyncio.iscoroutinefunction(opsdroid.skills[0]) is True
async def test_parse_luisai(self): with OpsDroid() as opsdroid: opsdroid.config["parsers"] = {"luisai": {"enabled": True}} luisai_intent = "" skill = amock.CoroutineMock() mock_connector = Connector({}, opsdroid=opsdroid) match_luisai_intent(luisai_intent)(skill) message = Message( text="Hello world", user="******", target="default", connector=mock_connector, ) with amock.patch("opsdroid.parsers.luisai.parse_luisai"): tasks = await opsdroid.parse(message) self.assertEqual(len(tasks), 2)
async def test_parse_luisai_with_entities(self): with OpsDroid() as opsdroid: opsdroid.config["parsers"] = [{ "name": "luisai", "appid": "test", "appkey": "test", "verbose": True }] mock_skill = await self.getMockSkill() mock_skill.config = {"name": "weather"} opsdroid.skills.append( match_luisai_intent("weatherLocation")(mock_skill)) mock_connector = amock.CoroutineMock() message = Message( text="whats the weather in london", user="******", target="default", connector=mock_connector, ) with amock.patch.object(luisai, "call_luisai") as mocked_call_luisai: mocked_call_luisai.return_value = { "query": "whats the weather in london", "topScoringIntent": { "intent": "weatherLocation", "score": 0.918992, }, "intents": [ { "intent": "weatherLocation", "score": 0.918992 }, { "intent": "None", "score": 0.03931402 }, ], "entities": [{ "entity": "london", "type": "builtin.geographyV2.city", "startIndex": 21, "endIndex": 26, "role": "location", }], "sentimentAnalysis": { "label": "neutral", "score": 0.5 }, } [skill ] = await luisai.parse_luisai(opsdroid, opsdroid.skills, message, opsdroid.config["parsers"][0]) self.assertEqual(len(skill["message"].entities.keys()), 1) self.assertTrue("location" in skill["message"].entities.keys()) self.assertEqual( skill["message"].entities["location"]["value"], "london")
async def test_parse_luisai_nointents(self): with OpsDroid() as opsdroid: opsdroid.config["parsers"] = [{ "name": "luisai", "appid": "test", "appkey": "test", "verbose": True }] mock_skill = await self.getMockSkill() mock_skill.config = {"name": "greetings"} opsdroid.skills.append( match_luisai_intent("Calendar.Add")(mock_skill)) mock_connector = amock.CoroutineMock() message = Message( text="schedule meeting", user="******", target="default", connector=mock_connector, ) with amock.patch.object(luisai, "call_luisai") as mocked_call_luisai: mocked_call_luisai.return_value = { "query": "schedule meeting", "topScoringIntent": { "intent": "Calendar.Add", "score": 0.900492251, }, "entities": [], } skills = await luisai.parse_luisai( opsdroid, opsdroid.skills, message, opsdroid.config["parsers"][0]) self.assertFalse(skills)
async def test_parse_luisai_nointents(self): with OpsDroid() as opsdroid: opsdroid.config['parsers'] = [ {'name': 'luisai', 'appid': 'test', 'appkey': 'test', 'verbose': True} ] mock_skill = await self.getMockSkill() mock_skill.config = { "name": "greetings" } opsdroid.skills.append(match_luisai_intent('Calendar.Add')(mock_skill)) mock_connector = amock.CoroutineMock() message = Message("schedule meeting", "user", "default", mock_connector) with amock.patch.object(luisai, 'call_luisai') as \ mocked_call_luisai: mocked_call_luisai.return_value = { "query": "schedule meeting", "topScoringIntent": { "intent": "Calendar.Add", "score": 0.900492251 }, "entities": [] } skills = await luisai.parse_luisai( opsdroid, opsdroid.skills, message, opsdroid.config['parsers'][0]) self.assertFalse(skills)
async def test_parse_luisai(self): with OpsDroid() as opsdroid: opsdroid.config['parsers'] = [{ 'name': 'luisai', 'appid': 'test', 'appkey': 'test', 'verbose': True }] mock_skill = await self.getMockSkill() mock_skill.config = {"name": "greetings"} opsdroid.skills.append( match_luisai_intent('Calendar.Add')(mock_skill)) mock_connector = amock.CoroutineMock() message = Message("schedule meeting", "user", "default", mock_connector) with amock.patch.object(luisai, 'call_luisai') as \ mocked_call_luisai: mocked_call_luisai.return_value = { "query": "schedule meeting", "topScoringIntent": { "intent": "Calendar.Add", "score": 0.900492251 }, "intents": [{ "intent": "Calendar.Add", "score": 0.900492251 }], "entities": [] } skills = await luisai.parse_luisai( opsdroid, opsdroid.skills, message, opsdroid.config['parsers'][0]) self.assertEqual(mock_skill, skills[0]["skill"])
async def test_match_luisai(self): with OpsDroid() as opsdroid: intent = "myIntent" decorator = matchers.match_luisai_intent(intent) opsdroid.skills.append(decorator(await self.getMockSkill())) self.assertEqual(len(opsdroid.skills), 1) self.assertEqual(opsdroid.skills[0].matchers[0]["luisai_intent"], intent) self.assertTrue(asyncio.iscoroutinefunction(opsdroid.skills[0]))
async def test_match_luisai(self): with OpsDroid() as opsdroid: intent = "myIntent" decorator = matchers.match_luisai_intent(intent) opsdroid.skills.append(decorator(await self.getMockSkill())) self.assertEqual(len(opsdroid.skills), 1) self.assertEqual(opsdroid.skills[0].matchers[0]["luisai_intent"], intent) self.assertTrue(asyncio.iscoroutinefunction(opsdroid.skills[0]))
async def test_match_luisai(self): with OpsDroid() as opsdroid: intent = "myIntent" mockedskill = mock.MagicMock() decorator = matchers.match_luisai_intent(intent) decorator(mockedskill) self.assertEqual(len(opsdroid.skills), 1) self.assertEqual(opsdroid.skills[0]["luisai_intent"], intent) self.assertIsInstance(opsdroid.skills[0]["skill"], mock.MagicMock)
async def test_parse_luisai_raises(self): with OpsDroid() as opsdroid: opsdroid.config['parsers'] = [ {'name': 'luisai', 'appid': 'test', 'appkey': 'test', 'verbose': True} ] mock_skill = amock.CoroutineMock() mock_skill.side_effect = Exception() opsdroid.loader.current_import_config = { "name": "mocked-skill" } match_luisai_intent('Calendar.Add')(mock_skill) mock_connector = amock.MagicMock() mock_connector.respond = amock.CoroutineMock() message = Message("schedule meeting", "user", "default", mock_connector) with amock.patch.object(luisai, 'call_luisai') as \ mocked_call_luisai: mocked_call_luisai.return_value = { "query": "schedule meeting", "topScoringIntent": { "intent": "Calendar.Add", "score": 0.900492251 }, "intents": [ { "intent": "Calendar.Add", "score": 0.900492251 } ], "entities": [] } skills = await luisai.parse_luisai( opsdroid, message, opsdroid.config['parsers'][0]) self.assertEqual(mock_skill, skills[0]["skill"]) await opsdroid.run_skill( skills[0]["skill"], skills[0]["config"], message) self.assertTrue(skills[0]["skill"].called)
async def test_parse_luisai_failure(self): with OpsDroid() as opsdroid: opsdroid.config['parsers'] = [{ 'name': 'luisai', 'appid': 'test', 'appkey': 'test', 'verbose': True }] mock_skill = amock.CoroutineMock() match_luisai_intent('Calendar.Add')(mock_skill) mock_connector = amock.CoroutineMock() message = Message("schedule meeting", "user", "default", mock_connector) with amock.patch.object(luisai, 'call_luisai') as \ mocked_call_luisai: mocked_call_luisai.return_value = {"statusCode": 401} skills = await luisai.parse_luisai( opsdroid, message, opsdroid.config['parsers'][0]) self.assertFalse(skills)
async def test_parse_luisai_failure(self): with OpsDroid() as opsdroid: opsdroid.config['parsers'] = [ {'name': 'luisai', 'appid': 'test', 'appkey': 'test', 'verbose': True} ] mock_skill = amock.CoroutineMock() match_luisai_intent('Calendar.Add')(mock_skill) mock_connector = amock.CoroutineMock() message = Message("schedule meeting", "user", "default", mock_connector) with amock.patch.object(luisai, 'call_luisai') as \ mocked_call_luisai: mocked_call_luisai.return_value = { "statusCode": 401 } skills = await luisai.parse_luisai( opsdroid, opsdroid.skills, message, opsdroid.config['parsers'][0]) self.assertFalse(skills)
async def test_parse_luisai_raise_ClientOSError(self): with OpsDroid() as opsdroid: opsdroid.config['parsers'] = [{ 'name': 'luisai', 'appid': 'test', 'appkey': 'test', 'verbose': True, 'min-score': 0.95 }] mock_skill = amock.CoroutineMock() match_luisai_intent('Calendar.Add')(mock_skill) mock_connector = amock.CoroutineMock() message = Message("schedule meeting", "user", "default", mock_connector) with amock.patch.object(luisai, 'call_luisai') as \ mocked_call: mocked_call.side_effect = ClientOSError() await luisai.parse_luisai(opsdroid, opsdroid.skills, message, opsdroid.config['parsers'][0]) self.assertFalse(mock_skill.called) self.assertTrue(mocked_call.called)
async def test_parse_luisai_raise_ClientOSError(self): with OpsDroid() as opsdroid: opsdroid.config['parsers'] = [ {'name': 'luisai', 'appid': 'test', 'appkey': 'test', 'verbose': True, 'min-score': 0.95} ] mock_skill = amock.CoroutineMock() match_luisai_intent('Calendar.Add')(mock_skill) mock_connector = amock.CoroutineMock() message = Message("schedule meeting", "user", "default", mock_connector) with amock.patch.object(luisai, 'call_luisai') as \ mocked_call: mocked_call.side_effect = ClientOSError() await luisai.parse_luisai(opsdroid, opsdroid.skills, message, opsdroid.config['parsers'][0]) self.assertFalse(mock_skill.called) self.assertTrue(mocked_call.called)
async def test_parse_luisai_raises(self): with OpsDroid() as opsdroid: opsdroid.config["parsers"] = [{ "name": "luisai", "appid": "test", "appkey": "test", "verbose": True }] mock_skill = await self.getRaisingMockSkill() mock_skill.config = {"name": "greetings"} opsdroid.skills.append( match_luisai_intent("Calendar.Add")(mock_skill)) mock_connector = amock.MagicMock() mock_connector.send = amock.CoroutineMock() message = Message( text="schedule meeting", user="******", target="default", connector=mock_connector, ) with amock.patch.object(luisai, "call_luisai") as mocked_call_luisai: mocked_call_luisai.return_value = { "query": "schedule meeting", "topScoringIntent": { "intent": "Calendar.Add", "score": 0.900492251, }, "intents": [{ "intent": "Calendar.Add", "score": 0.900492251 }], "entities": [], } skills = await luisai.parse_luisai( opsdroid, opsdroid.skills, message, opsdroid.config["parsers"][0]) self.assertEqual(mock_skill, skills[0]["skill"]) await opsdroid.run_skill(skills[0]["skill"], skills[0]["config"], message) self.assertLogs("_LOGGER", "exception")
async def test_parse_luisai_raises(self): with OpsDroid() as opsdroid: opsdroid.config['parsers'] = [ {'name': 'luisai', 'appid': 'test', 'appkey': 'test', 'verbose': True} ] mock_skill = await self.getRaisingMockSkill() mock_skill.config = { "name": "greetings" } opsdroid.skills.append(match_luisai_intent('Calendar.Add')(mock_skill)) mock_connector = amock.MagicMock() mock_connector.send = amock.CoroutineMock() message = Message("schedule meeting", "user", "default", mock_connector) with amock.patch.object(luisai, 'call_luisai') as \ mocked_call_luisai: mocked_call_luisai.return_value = { "query": "schedule meeting", "topScoringIntent": { "intent": "Calendar.Add", "score": 0.900492251 }, "intents": [ { "intent": "Calendar.Add", "score": 0.900492251 } ], "entities": [] } skills = await luisai.parse_luisai( opsdroid, opsdroid.skills, message, opsdroid.config['parsers'][0]) self.assertEqual(mock_skill, skills[0]["skill"]) await opsdroid.run_skill( skills[0]["skill"], skills[0]["config"], message ) self.assertLogs('_LOGGER', 'exception')