示例#1
0
    def test_search_finds_in_name(self):
        q1 = query_factory.create(name=u"Testing seåřċħ")
        q2 = query_factory.create(name=u"Testing seåřċħing")
        q3 = query_factory.create(name=u"Testing seå řċħ")

        queries = models.Query.search(u"seåřċħ")

        self.assertIn(q1, queries)
        self.assertIn(q2, queries)
        self.assertNotIn(q3, queries)
示例#2
0
    def test_search_by_id_returns_query(self):
        q1 = query_factory.create(description="Testing search")
        q2 = query_factory.create(description="Testing searching")
        q3 = query_factory.create(description="Testing sea rch")

        queries = models.Query.search(str(q3.id))

        self.assertIn(q3, queries)
        self.assertNotIn(q1, queries)
        self.assertNotIn(q2, queries)
示例#3
0
    def test_search_finds_in_description(self):
        q1 = query_factory.create(description=u"Testing seåřċħ")
        q2 = query_factory.create(description=u"Testing seåřċħing")
        q3 = query_factory.create(description=u"Testing seå řċħ")

        queries = models.Query.search(u"seåřċħ")

        self.assertIn(q1, queries)
        self.assertIn(q2, queries)
        self.assertNotIn(q3, queries)
示例#4
0
    def test_search_finds_in_name(self):
        q1 = query_factory.create(name="Testing search")
        q2 = query_factory.create(name="Testing searching")
        q3 = query_factory.create(name="Testing sea rch")

        queries = models.Query.search("search")

        self.assertIn(q1, queries)
        self.assertIn(q2, queries)
        self.assertNotIn(q3, queries)
示例#5
0
    def test_search_finds_in_description(self):
        q1 = query_factory.create(description="Testing search")
        q2 = query_factory.create(description="Testing searching")
        q3 = query_factory.create(description="Testing sea rch")

        queries = models.Query.search("search")

        self.assertIn(q1, queries)
        self.assertIn(q2, queries)
        self.assertNotIn(q3, queries)
示例#6
0
    def test_doesnt_update_queries_with_different_data_source(self):
        query1 = query_factory.create(query=self.query, data_source=self.data_source)
        query2 = query_factory.create(query=self.query, data_source=self.data_source)
        query3 = query_factory.create(query=self.query, data_source=data_source_factory.create())

        query_result = models.QueryResult.store_result(self.data_source.id, self.query_hash, self.query, self.data,
                                                       self.runtime, self.utcnow)

        self.assertEqual(models.Query.get_by_id(query1.id)._data['latest_query_data'], query_result.id)
        self.assertEqual(models.Query.get_by_id(query2.id)._data['latest_query_data'], query_result.id)
        self.assertNotEqual(models.Query.get_by_id(query3.id)._data['latest_query_data'], query_result.id)
示例#7
0
    def test_updates_existing_queries(self):
        query1 = query_factory.create(query=self.query, data_source=self.data_source)
        query2 = query_factory.create(query=self.query, data_source=self.data_source)
        query3 = query_factory.create(query=self.query, data_source=self.data_source)

        query_result = models.QueryResult.store_result(self.data_source.id, self.query_hash, self.query, self.data,
                                                       self.runtime, self.utcnow)

        self.assertEqual(models.Query.get_by_id(query1.id)._data['latest_query_data'], query_result.id)
        self.assertEqual(models.Query.get_by_id(query2.id)._data['latest_query_data'], query_result.id)
        self.assertEqual(models.Query.get_by_id(query3.id)._data['latest_query_data'], query_result.id)
示例#8
0
    def test_doesnt_update_queries_with_different_data_source(self):
        query1 = query_factory.create(query=self.query, data_source=self.data_source)
        query2 = query_factory.create(query=self.query, data_source=self.data_source)
        query3 = query_factory.create(query=self.query, data_source=data_source_factory.create())

        query_result, _ = models.QueryResult.store_result(self.data_source.id, self.query_hash, self.query, self.data,
                                                       self.runtime, self.utcnow)

        self.assertEqual(models.Query.get_by_id(query1.id)._data['latest_query_data'], query_result.id)
        self.assertEqual(models.Query.get_by_id(query2.id)._data['latest_query_data'], query_result.id)
        self.assertNotEqual(models.Query.get_by_id(query3.id)._data['latest_query_data'], query_result.id)
示例#9
0
    def test_search_by_id_returns_query(self):
        q1 = query_factory.create(description="Testing search")
        q2 = query_factory.create(description="Testing searching")
        q3 = query_factory.create(description="Testing sea rch")


        queries = models.Query.search(str(q3.id))

        self.assertIn(q3, queries)
        self.assertNotIn(q1, queries)
        self.assertNotIn(q2, queries)
示例#10
0
    def test_removes_scheduling(self):
        query = query_factory.create(ttl=1)

        query.archive()

        query = models.Query.get_by_id(query.id)

        self.assertEqual(-1, query.ttl)
示例#11
0
    def test_save_updates_updated_at_field(self):
        # This should be a test of ModelTimestampsMixin, but it's easier to test in context of existing model... :-\
        one_day_ago = datetime.datetime.today() - datetime.timedelta(days=1)
        q = query_factory.create(created_at=one_day_ago, updated_at=one_day_ago)

        q.save()

        self.assertNotEqual(q.updated_at, one_day_ago)
示例#12
0
    def test_removes_scheduling(self):
        query = query_factory.create(schedule="1")

        query.archive()

        query = models.Query.get_by_id(query.id)

        self.assertEqual(None, query.schedule)
示例#13
0
    def test_removes_scheduling(self):
        query = query_factory.create(schedule="1")

        query.archive()

        query = models.Query.get_by_id(query.id)

        self.assertEqual(None, query.schedule)
示例#14
0
    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())
示例#15
0
    def test_removes_scheduling(self):
        query = query_factory.create(ttl=1)

        query.archive()

        query = models.Query.get_by_id(query.id)

        self.assertEqual(-1, query.ttl)
示例#16
0
    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())
示例#17
0
    def test_save_updates_updated_at_field(self):
        # This should be a test of ModelTimestampsMixin, but it's easier to test in context of existing model... :-\
        one_day_ago = datetime.datetime.today() - datetime.timedelta(days=1)
        q = query_factory.create(created_at=one_day_ago, updated_at=one_day_ago)

        q.save()

        self.assertNotEqual(q.updated_at, one_day_ago)
示例#18
0
    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)
示例#19
0
    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)
示例#20
0
    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)
示例#21
0
    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)
示例#22
0
    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)
示例#23
0
    def test_changing_query_text_changes_hash(self):
        q = query_factory.create()

        old_hash = q.query_hash
        models.Query.update_instance(q.id, query="SELECT 2;")

        q = models.Query.get_by_id(q.id)

        self.assertNotEquals(old_hash, q.query_hash)
示例#24
0
    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)
示例#25
0
    def test_changing_query_text_changes_hash(self):
        q = query_factory.create()

        old_hash = q.query_hash
        models.Query.update_instance(q.id, query="SELECT 2;")

        q = models.Query.get_by_id(q.id)

        self.assertNotEquals(old_hash, q.query_hash)
示例#26
0
    def test_updates_existing_queries(self):
        query1 = query_factory.create(query=self.query,
                                      data_source=self.data_source)
        query2 = query_factory.create(query=self.query,
                                      data_source=self.data_source)
        query3 = query_factory.create(query=self.query,
                                      data_source=self.data_source)

        query_result = models.QueryResult.store_result(self.data_source.id,
                                                       self.query_hash,
                                                       self.query, self.data,
                                                       self.runtime,
                                                       self.utcnow)

        self.assertEqual(
            models.Query.get_by_id(query1.id)._data['latest_query_data'],
            query_result.id)
        self.assertEqual(
            models.Query.get_by_id(query2.id)._data['latest_query_data'],
            query_result.id)
        self.assertEqual(
            models.Query.get_by_id(query3.id)._data['latest_query_data'],
            query_result.id)
示例#27
0
    def test_archived_query_doesnt_return_in_all(self):
        query = query_factory.create(ttl=1)
        yesterday = datetime.datetime.now() - datetime.timedelta(days=1)
        query_result = models.QueryResult.store_result(query.data_source.id, query.query_hash, query.query, "1",
                                                       123, yesterday)

        query.latest_query_data = query_result
        query.save()

        self.assertIn(query, models.Query.all_queries())
        self.assertIn(query, models.Query.outdated_queries())

        query.archive()

        self.assertNotIn(query, models.Query.all_queries())
        self.assertNotIn(query, models.Query.outdated_queries())
示例#28
0
    def test_archived_query_doesnt_return_in_all(self):
        query = query_factory.create(schedule="1")
        yesterday = datetime.datetime.now() - datetime.timedelta(days=1)
        query_result, _ = models.QueryResult.store_result(query.data_source.id, query.query_hash, query.query, "1",
                                                       123, yesterday)

        query.latest_query_data = query_result
        query.save()

        self.assertIn(query, models.Query.all_queries())
        self.assertIn(query, models.Query.outdated_queries())

        query.archive()

        self.assertNotIn(query, models.Query.all_queries())
        self.assertNotIn(query, models.Query.outdated_queries())
示例#29
0
    def test_archive_query_sets_flag(self):
        query = query_factory.create(ttl=1)
        query.archive()
        query = models.Query.get_by_id(query.id)

        self.assertEquals(query.is_archived, True)
示例#30
0
    def test_outdated_queries_skips_unscheduled_queries(self):
        query = query_factory.create(schedule=None)
        queries = models.Query.outdated_queries()

        self.assertNotIn(query, queries)
示例#31
0
 def test_save_creates_default_visualization(self):
     q = query_factory.create()
     self.assertEquals(q.visualizations.count(), 1)
示例#32
0
    def test_outdated_queries_skips_unscheduled_queries(self):
        query = query_factory.create(schedule=None)
        queries = models.Query.outdated_queries()

        self.assertNotIn(query, queries)
示例#33
0
    def test_archive_query_sets_flag(self):
        query = query_factory.create()
        query.archive()
        query = models.Query.get_by_id(query.id)

        self.assertEquals(query.is_archived, True)
示例#34
0
 def test_save_creates_default_visualization(self):
     q = query_factory.create()
     self.assertEquals(q.visualizations.count(), 1)