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 setUp(self): super(TestQueryResultStoreResult, self).setUp() self.data_source = data_source_factory.create() self.query = "SELECT 1" self.query_hash = gen_query_hash(self.query) self.runtime = 123 self.utcnow = datetime.datetime.utcnow() self.data = "data"
def test_imports_updates_existing_models(self): importer = import_export.Importer(data_source=data_source_factory.create()) importer.import_dashboard(self.user, self.dashboard) self.dashboard['name'] = 'Testing #2' dashboard = importer.import_dashboard(self.user, self.dashboard) self.assertEqual(dashboard.name, self.dashboard['name']) self.assertEquals(models.Dashboard.select().count(), 1)
def test_using_existing_mapping(self): dashboard = dashboard_factory.create() mapping = {'Dashboard': {"1": dashboard.id}} importer = import_export.Importer( object_mapping=mapping, data_source=data_source_factory.create()) imported_dashboard = importer.import_dashboard(self.user, self.dashboard) self.assertEqual(imported_dashboard, dashboard)
def test_get_schema(self): return_value = [{'name': 'table', 'columns': []}] with mock.patch('redash.query_runner.pg.PostgreSQL.get_schema') as patched_get_schema: patched_get_schema.return_value = return_value ds = data_source_factory.create() schema = ds.get_schema() self.assertEqual(return_value, schema)
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)
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)
def test_using_existing_mapping(self): dashboard = dashboard_factory.create() mapping = { 'Dashboard': { "1": dashboard.id } } importer = import_export.Importer(object_mapping=mapping, data_source=data_source_factory.create()) imported_dashboard = importer.import_dashboard(self.user, self.dashboard) self.assertEqual(imported_dashboard, dashboard)
def test_get_schema_skips_cache_with_refresh_true(self): return_value = [{'name': 'table', 'columns': []}] with mock.patch('redash.query_runner.pg.PostgreSQL.get_schema') as patched_get_schema: patched_get_schema.return_value = return_value ds = data_source_factory.create() ds.get_schema() new_return_value = [{'name': 'new_table', 'columns': []}] patched_get_schema.return_value = new_return_value schema = ds.get_schema(refresh=True) self.assertEqual(new_return_value, schema) self.assertEqual(patched_get_schema.call_count, 2)
def test_imports_dashboard_correctly(self): importer = import_export.Importer(data_source=data_source_factory.create()) dashboard = importer.import_dashboard(self.user, self.dashboard) self.assertIsNotNone(dashboard) self.assertEqual(dashboard.name, self.dashboard['name']) self.assertEqual(dashboard.slug, self.dashboard['slug']) self.assertEqual(dashboard.user, self.user) self.assertEqual(dashboard.widgets.count(), reduce(lambda s, row: s + len(row), self.dashboard['widgets'], 0)) self.assertEqual(models.Visualization.select().count(), dashboard.widgets.count()-1) self.assertEqual(models.Query.select().count(), dashboard.widgets.count()-2)
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_get_latest_returns_none_if_not_found(self): ds = data_source_factory.create() found_query_result = models.QueryResult.get_latest(ds, "SELECT 1", 60) self.assertIsNone(found_query_result)