+ def test_next_wait_time(self):
+ with self.subTest("first start"):
+ self.assertEqual(30, store.Portfolio.next_wait_time())
+ self.assertIsNotNone(store.Portfolio.poll_started_at)
+ with self.subTest("25min"):
+ store.Portfolio.poll_started_at = datetime.datetime.now() - datetime.timedelta(minutes=25)
+ self.assertEqual(30, store.Portfolio.next_wait_time())
+ with self.subTest("35min"):
+ store.Portfolio.poll_started_at = datetime.datetime.now() - datetime.timedelta(minutes=35)
+ self.assertEqual(60, store.Portfolio.next_wait_time())
+ with self.subTest("1h15"):
+ store.Portfolio.poll_started_at = datetime.datetime.now() - datetime.timedelta(minutes=75)
+ self.assertEqual(300, store.Portfolio.next_wait_time())
+ with self.subTest("5hours"):
+ store.Portfolio.poll_started_at = datetime.datetime.now() - datetime.timedelta(hours=5)
+ self.assertEqual(3600, store.Portfolio.next_wait_time())
+ with self.subTest("overdue"), self.assertRaises(Exception):
+ store.Portfolio.poll_started_at = datetime.datetime.now() - datetime.timedelta(hours=25)
+ store.Portfolio.next_wait_time()
+