bots: Mock 'send_message' function for 'zulip-bot-output'.
Very few bots like followup bot directly call 'send_message' function from the bot code. Since ExternalBotHandler class is mocked, we'll have to mock 'send_message' function as well. Added dummy field value of 'sender_email' for the message to be as followup bot requires that field while processing the message. Since send_message is directly called from a specific bot's code, so it can be sent to a different stream or under a different topic than that of the incoming message. So, print the entire message along with stream name. A bot calling 'send_reply' function will reply to the incoming message in the same stream under the same topic. So, only printing bot's response message content for that.
This commit is contained in:
		
							parent
							
								
									36f4982e54
								
							
						
					
					
						commit
						402dda87fe
					
				
					 1 changed files with 14 additions and 3 deletions
				
			
		|  | @ -80,7 +80,7 @@ def main(): | |||
|             provision_bot(bot_dir, options.force) | ||||
|         lib_module = import_module('zulip_bots.bots.{bot}.{bot}'.format(bot=bot_name)) | ||||
| 
 | ||||
|     message = {'content': options.message} | ||||
|     message = {'content': options.message, 'sender_email': 'foo_sender@zulip.com'} | ||||
|     message_handler = lib_module.handler_class() | ||||
| 
 | ||||
|     with patch('zulip_bots.lib.ExternalBotHandler') as mock_bot_handler: | ||||
|  | @ -100,17 +100,28 @@ def main(): | |||
|             return dict(config.items(section)) | ||||
| 
 | ||||
|         mock_bot_handler.get_config_info = get_config_info | ||||
|         if (hasattr(message_handler, 'initialize') and callable(message_handler.initialize)): | ||||
|         if hasattr(message_handler, 'initialize') and callable(message_handler.initialize): | ||||
|             message_handler.initialize(mock_bot_handler) | ||||
| 
 | ||||
|         mock_bot_handler.send_reply = MagicMock() | ||||
|         mock_bot_handler.send_message = MagicMock() | ||||
|         message_handler.handle_message( | ||||
|             message=message, | ||||
|             bot_handler=mock_bot_handler, | ||||
|             state_handler=StateHandler() | ||||
|         ) | ||||
|         print("On sending ", options.name, " bot the following message:\n\"", options.message, "\"") | ||||
|         print("\nThe bot gives the following output message:\n\"", list(mock_bot_handler.send_reply.call_args)[0][1], "\"") | ||||
| 
 | ||||
|         # send_reply and send_message have slightly arguments; the | ||||
|         # following takes that into account. | ||||
|         #   send_reply(original_message, response) | ||||
|         #   send_message(response_message) | ||||
|         if mock_bot_handler.send_reply.called: | ||||
|             print("\nThe bot gives the following output message:\n\"", list(mock_bot_handler.send_reply.call_args)[0][1], "\"") | ||||
|         elif mock_bot_handler.send_message.called: | ||||
|             print("\nThe bot sends the following output to zulip:\n\"", list(mock_bot_handler.send_message.call_args)[0][0], "\"") | ||||
|         else: | ||||
|             print("\nThe bot sent no reply.") | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Abhijeet Kaur
						Abhijeet Kaur