class JobQueueTest(BaseTest, unittest.TestCase): """ This object represents Tests for Updater, Dispatcher, WebhookServer and WebhookHandler """ def setUp(self): self.jq = JobQueue("Bot", tick_interval=0.005) self.result = 0 def tearDown(self): if self.jq is not None: self.jq.stop() def job1(self, bot): self.result += 1 def job2(self, bot): raise Exception("Test Error") def test_basic(self): self.jq.put(self.job1, 0.1) sleep(1.5) self.assertGreaterEqual(self.result, 10) def test_noRepeat(self): self.jq.put(self.job1, 0.1, repeat=False) sleep(0.5) self.assertEqual(1, self.result) def test_nextT(self): self.jq.put(self.job1, 0.1, next_t=0.5) sleep(0.45) self.assertEqual(0, self.result) sleep(0.1) self.assertEqual(1, self.result) def test_multiple(self): self.jq.put(self.job1, 0.1, repeat=False) self.jq.put(self.job1, 0.2, repeat=False) self.jq.put(self.job1, 0.4) sleep(1) self.assertEqual(4, self.result) def test_error(self): self.jq.put(self.job2, 0.1) self.jq.put(self.job1, 0.2) self.jq.start() sleep(0.4) self.assertEqual(1, self.result) def test_inUpdater(self): u = Updater(bot="MockBot", job_queue_tick_interval=0.005) u.job_queue.put(self.job1, 0.5) sleep(0.75) self.assertEqual(1, self.result) u.stop() sleep(2) self.assertEqual(1, self.result)