def test_returns_only_over_a_week_old_results(self): two_weeks_ago = datetime.datetime.now() - datetime.timedelta(days=14) unused_qr = query_result_factory.create(retrieved_at=two_weeks_ago) new_unused_qr = query_result_factory.create() self.assertIn(unused_qr, models.QueryResult.unused()) self.assertNotIn(new_unused_qr, models.QueryResult.unused())
def test_returns_only_over_a_week_old_results(self): two_weeks_ago = datetime.datetime.now() - datetime.timedelta(days=14) unused_qr = query_result_factory.create(retrieved_at=two_weeks_ago) new_unused_qr = query_result_factory.create() self.assertIn(unused_qr, models.QueryResult.unused()) self.assertNotIn(new_unused_qr, models.QueryResult.unused())
def test_returns_only_unused_query_results(self): two_weeks_ago = datetime.datetime.now() - datetime.timedelta(days=14) qr = query_result_factory.create() query = query_factory.create(latest_query_data=qr) unused_qr = query_result_factory.create(retrieved_at=two_weeks_ago) self.assertIn(unused_qr, models.QueryResult.unused()) self.assertNotIn(qr, models.QueryResult.unused())
def test_returns_only_unused_query_results(self): two_weeks_ago = datetime.datetime.now() - datetime.timedelta(days=14) qr = query_result_factory.create() query = query_factory.create(latest_query_data=qr) unused_qr = query_result_factory.create(retrieved_at=two_weeks_ago) self.assertIn(unused_qr, models.QueryResult.unused()) self.assertNotIn(qr, models.QueryResult.unused())
def test_get_latest_returns_the_most_recent_result(self): yesterday = datetime.datetime.now() - datetime.timedelta(seconds=30) old_qr = query_result_factory.create(retrieved_at=yesterday) qr = query_result_factory.create() found_query_result = models.QueryResult.get_latest(qr.data_source, qr.query, 60) self.assertEqual(found_query_result.id, qr.id)
def test_get_latest_returns_the_most_recent_result(self): yesterday = datetime.datetime.now() - datetime.timedelta(seconds=30) old_qr = query_result_factory.create(retrieved_at=yesterday) qr = query_result_factory.create() found_query_result = models.QueryResult.get_latest(qr.data_source, qr.query, 60) self.assertEqual(found_query_result.id, qr.id)
def test_get_latest_returns_the_last_cached_result_for_negative_ttl(self): yesterday = datetime.datetime.now() + datetime.timedelta(days=-100) very_old = query_result_factory.create(retrieved_at=yesterday) yesterday = datetime.datetime.now() + datetime.timedelta(days=-1) qr = query_result_factory.create(retrieved_at=yesterday) found_query_result = models.QueryResult.get_latest(qr.data_source, qr.query, -1) self.assertEqual(found_query_result.id, qr.id)
def test_get_latest_returns_the_last_cached_result_for_negative_ttl(self): yesterday = datetime.datetime.now() + datetime.timedelta(days=-100) very_old = query_result_factory.create(retrieved_at=yesterday) yesterday = datetime.datetime.now() + datetime.timedelta(days=-1) qr = query_result_factory.create(retrieved_at=yesterday) found_query_result = models.QueryResult.get_latest(qr.data_source, qr.query, -1) self.assertEqual(found_query_result.id, qr.id)
def test_get_latest_doesnt_return_if_ttl_expired(self): yesterday = datetime.datetime.now() - datetime.timedelta(days=1) qr = query_result_factory.create(retrieved_at=yesterday) found_query_result = models.QueryResult.get_latest(qr.data_source, qr.query, ttl=60) self.assertIsNone(found_query_result)
def test_get_latest_returns_if_ttl_not_expired(self): yesterday = datetime.datetime.now() - datetime.timedelta(seconds=30) qr = query_result_factory.create(retrieved_at=yesterday) found_query_result = models.QueryResult.get_latest(qr.data_source, qr.query, max_age=120) self.assertEqual(found_query_result, qr)
def test_get_latest_doesnt_return_if_ttl_expired(self): yesterday = datetime.datetime.now() - datetime.timedelta(days=1) qr = query_result_factory.create(retrieved_at=yesterday) found_query_result = models.QueryResult.get_latest(qr.data_source, qr.query, max_age=60) self.assertIsNone(found_query_result)
def test_get_latest_returns_if_ttl_not_expired(self): yesterday = datetime.datetime.now() - datetime.timedelta(seconds=30) qr = query_result_factory.create(retrieved_at=yesterday) found_query_result = models.QueryResult.get_latest(qr.data_source, qr.query, ttl=120) self.assertEqual(found_query_result, qr)
def test_get_latest_doesnt_return_query_from_different_data_source(self): qr = query_result_factory.create() data_source = data_source_factory.create() found_query_result = models.QueryResult.get_latest( data_source, qr.query, 60) self.assertIsNone(found_query_result)
def test_outdated_queries_works_with_specific_time_schedule(self): half_an_hour_ago = utcnow() - datetime.timedelta(minutes=30) query = query_factory.create(schedule=half_an_hour_ago.strftime('%H:%M')) query_result = query_result_factory.create(query=query, retrieved_at=half_an_hour_ago-datetime.timedelta(days=1)) query.latest_query_data = query_result query.save() queries = models.Query.outdated_queries() self.assertIn(query, queries)
def test_outdated_queries_works_with_specific_time_schedule(self): half_an_hour_ago = utcnow() - datetime.timedelta(minutes=30) query = query_factory.create(schedule=half_an_hour_ago.strftime('%H:%M')) query_result = query_result_factory.create(query=query, retrieved_at=half_an_hour_ago-datetime.timedelta(days=1)) query.latest_query_data = query_result query.save() queries = models.Query.outdated_queries() self.assertIn(query, queries)
def test_outdated_queries_works_with_ttl_based_schedule(self): two_hours_ago = datetime.datetime.now() - datetime.timedelta(hours=2) query = query_factory.create(schedule="3600") query_result = query_result_factory.create(query=query, retrieved_at=two_hours_ago) query.latest_query_data = query_result query.save() queries = models.Query.outdated_queries() self.assertIn(query, queries)
def test_skips_fresh_queries(self): half_an_hour_ago = datetime.datetime.now() - datetime.timedelta(minutes=30) query = query_factory.create(schedule="3600") query_result = query_result_factory.create(query=query, retrieved_at=half_an_hour_ago) query.latest_query_data = query_result query.save() queries = models.Query.outdated_queries() self.assertNotIn(query, queries)
def test_skips_fresh_queries(self): half_an_hour_ago = datetime.datetime.now() - datetime.timedelta(minutes=30) query = query_factory.create(schedule="3600") query_result = query_result_factory.create(query=query, retrieved_at=half_an_hour_ago) query.latest_query_data = query_result query.save() queries = models.Query.outdated_queries() self.assertNotIn(query, queries)
def test_outdated_queries_works_with_ttl_based_schedule(self): two_hours_ago = datetime.datetime.now() - datetime.timedelta(hours=2) query = query_factory.create(schedule="3600") query_result = query_result_factory.create(query=query, retrieved_at=two_hours_ago) query.latest_query_data = query_result query.save() queries = models.Query.outdated_queries() self.assertIn(query, queries)
def test_get_latest_returns_when_found(self): qr = query_result_factory.create() found_query_result = models.QueryResult.get_latest( qr.data_source, qr.query, 60) self.assertEqual(qr, found_query_result)
def test_get_latest_works_with_data_source_id(self): qr = query_result_factory.create() found_query_result = models.QueryResult.get_latest( qr.data_source.id, qr.query, 60) self.assertEqual(qr, found_query_result)
def test_get_latest_works_with_data_source_id(self): qr = query_result_factory.create() found_query_result = models.QueryResult.get_latest(qr.data_source.id, qr.query, 60) self.assertEqual(qr, found_query_result)
def test_get_latest_returns_when_found(self): qr = query_result_factory.create() found_query_result = models.QueryResult.get_latest(qr.data_source, qr.query, 60) self.assertEqual(qr, found_query_result)
def test_get_latest_doesnt_return_query_from_different_data_source(self): qr = query_result_factory.create() data_source = data_source_factory.create() found_query_result = models.QueryResult.get_latest(data_source, qr.query, 60) self.assertIsNone(found_query_result)