async def test_handle_command__other_command(self, handle_command): from randtalkbot.admin_handler import StrangerHandler message = Mock() message.command = 'foo_command' message.command_args = 'foo_args' await self.admin_handler.handle_command(message) handle_command.assert_called_once_with(message)
async def test_handle_command__start_has_invited_himself(self): from randtalkbot.stranger_handler import StrangerService message = Mock() message.command_args = 'foo_args' message.decode_command_args.return_value = {'i': 'foo_invitation'} self.stranger.wizard = 'none' self.stranger.invited_by = None self.stranger.invitation = 'foo_invitation' stranger_service = StrangerService.get_instance.return_value await self.stranger_handler._handle_command_start(message) stranger_service.get_stranger_by_invitation.assert_not_called() self.assertEqual(self.stranger.invited_by, None) self.assertEqual( self.sender.send_notification.call_args_list, [ call( 'Don\'t try to fool me. Forward message with the link to your friends and' ' receive well-earned bonuses that will help you to find partner quickly.' ), call( '*Manual*\n\nUse /begin to start looking for a conversational partner, once' ' you\'re matched you can use /end to end the conversation.' ), ], )
async def test_handle_command__other_command(self, handle_command): from randtalkbot.admin_handler import StrangerHandler message = Mock() message.command = 'foo_command' message.command_args = 'foo_args' await self.admin_handler.handle_command(message) handle_command.assert_called_once_with(message)
async def test_handle_command__start_no_invitation_is_in_setup(self): message = Mock() message.command_args = '' self.stranger.wizard = 'setup' self.stranger.invited_by = None await self.stranger_handler._handle_command_start(message) self.assertEqual(self.stranger.invited_by, None) self.sender.send_notification.assert_not_called()
async def test_handle_command__start_no_invitation_is_in_setup(self): message = Mock() message.command_args = '' self.stranger.wizard = 'setup' self.stranger.invited_by = None await self.stranger_handler._handle_command_start(message) self.assertEqual(self.stranger.invited_by, None) self.sender.send_notification.assert_not_called()
async def test_handle_command_pay__no_command_args(self): from randtalkbot.admin_handler import StrangerService stranger_service = StrangerService.get_instance.return_value message = Mock() message.command_args = None await self.admin_handler._handle_command_pay(message) stranger_service.get_stranger.assert_not_called() self.sender.send_notification.assert_called_once_with( 'Please specify Telegram ID and bonus amount like this: `/pay 31416 10 Thanks!`', )
async def test_handle_command_pay__no_command_args(self): from randtalkbot.admin_handler import StrangerService stranger_service = StrangerService.get_instance.return_value message = Mock() message.command_args = None await self.admin_handler._handle_command_pay(message) stranger_service.get_stranger.assert_not_called() self.sender.send_notification.assert_called_once_with( 'Please specify Telegram ID and bonus amount like this: `/pay 31416 10 Thanks!`', )
async def test_handle_command__start_no_invitation(self): message = Mock() message.command_args = '' self.stranger.wizard = 'none' self.stranger.invited_by = None await self.stranger_handler._handle_command_start(message) self.assertEqual(self.stranger.invited_by, None) self.sender.send_notification.assert_called_once_with( '*Manual*\n\nUse /begin to start looking for a conversational partner, once' ' you\'re matched you can use /end to end the conversation.')
async def test_handle_command_clear(self): from randtalkbot.admin_handler import StrangerService stranger = CoroutineMock() stranger_service = StrangerService.get_instance.return_value stranger_service.get_stranger.return_value = stranger message = Mock() message.command_args = '31416' await self.admin_handler._handle_command_clear(message) stranger_service.get_stranger.assert_called_once_with(31416) stranger.end_talk.assert_called_once_with() self.sender.send_notification.assert_called_once_with('Stranger {0} was cleared', 31416)
async def test_handle_command_pay(self): from randtalkbot.admin_handler import StrangerService stranger_service = StrangerService.get_instance.return_value stranger = CoroutineMock() stranger_service.get_stranger.return_value = stranger message = Mock() message.command_args = '31416 27183 foo gratitude' await self.admin_handler._handle_command_pay(message) stranger_service.get_stranger.assert_called_once_with(31416) stranger.pay.assert_called_once_with(27183, 'foo gratitude') self.sender.send_notification.assert_called_once_with('Success.')
async def test_handle_command__start_no_invitation(self): message = Mock() message.command_args = '' self.stranger.wizard = 'none' self.stranger.invited_by = None await self.stranger_handler._handle_command_start(message) self.assertEqual(self.stranger.invited_by, None) self.sender.send_notification.assert_called_once_with( '*Manual*\n\nUse /begin to start looking for a conversational partner, once ' 'you\'re matched you can use /end to end the conversation.' )
async def test_handle_command_clear(self): from randtalkbot.admin_handler import StrangerService stranger = CoroutineMock() stranger_service = StrangerService.get_instance.return_value stranger_service.get_stranger.return_value = stranger message = Mock() message.command_args = '31416' await self.admin_handler._handle_command_clear(message) stranger_service.get_stranger.assert_called_once_with(31416) stranger.end_talk.assert_called_once_with() self.sender.send_notification.assert_called_once_with('Stranger {0} was cleared', 31416)
async def test_handle_command_pay(self): from randtalkbot.admin_handler import StrangerService stranger_service = StrangerService.get_instance.return_value stranger = CoroutineMock() stranger_service.get_stranger.return_value = stranger message = Mock() message.command_args = '31416 27183 foo gratitude' await self.admin_handler._handle_command_pay(message) stranger_service.get_stranger.assert_called_once_with(31416) stranger.pay.assert_called_once_with(27183, 'foo gratitude') self.sender.send_notification.assert_called_once_with('Success.')
async def test_handle_command_pay__unknown_stranger(self): from randtalkbot.admin_handler import StrangerService stranger_service = StrangerService.get_instance.return_value error = StrangerServiceError() stranger_service.get_stranger.side_effect = error message = Mock() message.command_args = '31416 27183' await self.admin_handler._handle_command_pay(message) stranger_service.get_stranger.assert_called_once_with(31416) self.sender.send_notification.assert_called_once_with( 'Stranger wasn\'t found: {0}', error, )
async def test_handle_command_pay__unknown_stranger(self): from randtalkbot.admin_handler import StrangerService stranger_service = StrangerService.get_instance.return_value error = StrangerServiceError() stranger_service.get_stranger.side_effect = error message = Mock() message.command_args = '31416 27183' await self.admin_handler._handle_command_pay(message) stranger_service.get_stranger.assert_called_once_with(31416) self.sender.send_notification.assert_called_once_with( 'Stranger wasn\'t found: {0}', error, )
async def test_handle_command__start_has_invalid_invitation(self): from randtalkbot.stranger_handler import StrangerService message = Mock() message.command_args = 'foo_args' message.decode_command_args.side_effect = UnsupportedContentError() self.stranger.wizard = 'none' self.stranger.invited_by = None stranger_service = StrangerService.get_instance.return_value await self.stranger_handler._handle_command_start(message) stranger_service.get_stranger_by_invitation.assert_not_called() self.assertEqual(self.stranger.invited_by, None) self.sender.send_notification.assert_called_once_with( '*Manual*\n\nUse /begin to start looking for a conversational partner, once' ' you\'re matched you can use /end to end the conversation.')
async def test_handle_command_clear__incorrect_telegram_id(self): from randtalkbot.admin_handler import StrangerService stranger_service = StrangerService.get_instance.return_value message = Mock() message.command_args = 'foo' await self.admin_handler._handle_command_clear(message) stranger_service.get_stranger.assert_not_called() self.assertEqual( self.sender.send_notification.call_args_list, [ call('Is it really telegram_id: \"{0}\"?', 'foo'), call('Use it this way: `/clear 31416 27183`'), ], )
async def test_handle_command_clear__incorrect_telegram_id(self): from randtalkbot.admin_handler import StrangerService stranger_service = StrangerService.get_instance.return_value message = Mock() message.command_args = 'foo' await self.admin_handler._handle_command_clear(message) stranger_service.get_stranger.assert_not_called() self.assertEqual( self.sender.send_notification.call_args_list, [ call('Is it really telegram_id: \"{0}\"?', 'foo'), call('Use it this way: `/clear 31416 27183`'), ], )
async def test_handle_command__start_has_invalid_invitation_json_type(self): from randtalkbot.stranger_handler import StrangerService message = Mock() message.command_args = 'foo_args' message.decode_command_args.return_value = [1, 2, 3] self.stranger.wizard = 'none' self.stranger.invited_by = None stranger_service = StrangerService.get_instance.return_value await self.stranger_handler._handle_command_start(message) stranger_service.get_stranger_by_invitation.assert_not_called() self.assertEqual(self.stranger.invited_by, None) self.sender.send_notification.assert_called_once_with( '*Manual*\n\nUse /begin to start looking for a conversational partner, once ' 'you\'re matched you can use /end to end the conversation.' )
async def test_handle_command_clear__unknown_stranger(self): from randtalkbot.admin_handler import StrangerService error = StrangerServiceError() stranger_service = StrangerService.get_instance.return_value stranger_service.get_stranger.side_effect = error message = Mock() message.command_args = '31416' await self.admin_handler._handle_command_clear(message) stranger_service.get_stranger.assert_called_once_with(31416) self.assertEqual( self.sender.send_notification.call_args_list, [ call('Stranger {0} wasn\'t found: {1}', 31416, error), call('Use it this way: `/clear 31416 27183`'), ], )
async def test_handle_command_clear__unknown_stranger(self): from randtalkbot.admin_handler import StrangerService error = StrangerServiceError() stranger_service = StrangerService.get_instance.return_value stranger_service.get_stranger.side_effect = error message = Mock() message.command_args = '31416' await self.admin_handler._handle_command_clear(message) stranger_service.get_stranger.assert_called_once_with(31416) self.assertEqual( self.sender.send_notification.call_args_list, [ call('Stranger {0} wasn\'t found: {1}', 31416, error), call('Use it this way: `/clear 31416 27183`'), ], )
async def test_handle_command__start_has_invitation_and_already_invited_by(self): from randtalkbot.stranger_handler import StrangerService message = Mock() message.command_args = 'foo_args' message.decode_command_args.return_value = {'i': 'foo_invitation'} new_invited_by = CoroutineMock() stranger_service = StrangerService.get_instance.return_value stranger_service.get_stranger_by_invitation.return_value = new_invited_by self.stranger.wizard = 'none' invited_by = CoroutineMock() self.stranger.invited_by = invited_by await self.stranger_handler._handle_command_start(message) stranger_service.get_stranger_by_invitation.assert_not_called() self.assertEqual(self.stranger.invited_by, invited_by) self.sender.send_notification.assert_called_once_with( '*Manual*\n\nUse /begin to start looking for a conversational partner, once ' 'you\'re matched you can use /end to end the conversation.' )
async def test_handle_command__start_has_invitation_and_already_invited_by(self): from randtalkbot.stranger_handler import StrangerService message = Mock() message.command_args = 'foo_args' message.decode_command_args.return_value = {'i': 'foo_invitation'} new_invited_by = CoroutineMock() stranger_service = StrangerService.get_instance.return_value stranger_service.get_stranger_by_invitation.return_value = new_invited_by self.stranger.wizard = 'none' invited_by = CoroutineMock() self.stranger.invited_by = invited_by await self.stranger_handler._handle_command_start(message) stranger_service.get_stranger_by_invitation.assert_not_called() self.assertEqual(self.stranger.invited_by, invited_by) self.sender.send_notification.assert_called_once_with( '*Manual*\n\nUse /begin to start looking for a conversational partner, once ' 'you\'re matched you can use /end to end the conversation.' )
async def test_handle_command__start_has_invited_himself(self): from randtalkbot.stranger_handler import StrangerService message = Mock() message.command_args = 'foo_args' message.decode_command_args.return_value = {'i': 'foo_invitation'} self.stranger.wizard = 'none' self.stranger.invited_by = None self.stranger.invitation = 'foo_invitation' stranger_service = StrangerService.get_instance.return_value await self.stranger_handler._handle_command_start(message) stranger_service.get_stranger_by_invitation.assert_not_called() self.assertEqual(self.stranger.invited_by, None) self.assertEqual( self.sender.send_notification.call_args_list, [ call('Don\'t try to fool me. Forward message with the link to your friends and ' 'receive well-earned bonuses that will help you to find partner quickly.'), call('*Manual*\n\nUse /begin to start looking for a conversational partner, once ' 'you\'re matched you can use /end to end the conversation.'), ], )
async def test_handle_command__other_command(self, handle_command): message = Mock() message.command = 'foo_command' message.command_args = 'foo_args' await self.admin_handler.handle_command(message) handle_command.assert_called_once_with(message)