class TestService(unittest.TestCase): def setUp(self): self.caller = mock.MagicMock() from listenclosely_telegram.service import TelegramMessageServiceBackend self.service = TelegramMessageServiceBackend(self.caller) def _queue_thread(self, fn, *args, **kwargs): while not self.service.bot.listening: pass if fn: fn(*args, **kwargs) def _listen(self, asyn_action, timeout=0.3): self.input_thread = threading.Thread(target=self._queue_thread, args=(asyn_action,)) self.input_thread.daemon = True self.input_thread.start() self.service.listen() self.assertFalse(self.service.bot.listening) def _disconnect(self): self.assertTrue(self.service.bot.listening) self.service.disconnect() def test_caller_assigned(self): self.assertEqual(self.service.caller, self.caller) def test_disconnect(self): self.updates = [UpdateFactory()] with mock.patch('twx.botapi.TelegramBot.get_updates', callable=mock.MagicMock()) as mock_get_updates: mock_get_updates.return_value.wait = mock.MagicMock(return_value=self.updates) self._listen(self._disconnect) def test_offset(self): self.updates = [UpdateFactory()] with mock.patch('twx.botapi.TelegramBot.get_updates', callable=mock.MagicMock()) as mock_get_updates: mock_get_updates.return_value.wait = mock.MagicMock(return_value=self.updates) self._listen(self._disconnect) self.assertEqual(self.service.bot.offset-1, self.updates[0].update_id)
def setUp(self): self.caller = mock.MagicMock() from listenclosely_telegram.service import TelegramMessageServiceBackend self.service = TelegramMessageServiceBackend(self.caller)