mirror of
https://github.com/getredash/redash.git
synced 2025-12-19 17:37:19 -05:00
show pg and athena column comments and table descriptions as antd tooltip if they are defined (#6582)
* show column comments by default for athena and postgres * Restyled by prettier * fixed typo * fmt fix * ordered imports * fixed unit tests * fixed tests for athena --------- Co-authored-by: Andrew Chubatiuk <andrew.chubatiuk@motional.com> Co-authored-by: Restyled.io <commits@restyled.io> Co-authored-by: Andrii Chubatiuk <wachy@Andriis-MBP-2.lan>
This commit is contained in:
@@ -8,7 +8,7 @@ from tests import BaseTestCase
|
||||
|
||||
class DataSourceTest(BaseTestCase):
|
||||
def test_get_schema(self):
|
||||
return_value = [{"name": "table", "columns": []}]
|
||||
return_value = [{"name": "table", "columns": [], "description": None}]
|
||||
|
||||
with mock.patch("redash.query_runner.pg.PostgreSQL.get_schema") as patched_get_schema:
|
||||
patched_get_schema.return_value = return_value
|
||||
@@ -18,7 +18,7 @@ class DataSourceTest(BaseTestCase):
|
||||
self.assertEqual(return_value, schema)
|
||||
|
||||
def test_get_schema_uses_cache(self):
|
||||
return_value = [{"name": "table", "columns": []}]
|
||||
return_value = [{"name": "table", "columns": [], "description": None}]
|
||||
with mock.patch("redash.query_runner.pg.PostgreSQL.get_schema") as patched_get_schema:
|
||||
patched_get_schema.return_value = return_value
|
||||
|
||||
@@ -29,12 +29,12 @@ class DataSourceTest(BaseTestCase):
|
||||
self.assertEqual(patched_get_schema.call_count, 1)
|
||||
|
||||
def test_get_schema_skips_cache_with_refresh_true(self):
|
||||
return_value = [{"name": "table", "columns": []}]
|
||||
return_value = [{"name": "table", "columns": [], "description": None}]
|
||||
with mock.patch("redash.query_runner.pg.PostgreSQL.get_schema") as patched_get_schema:
|
||||
patched_get_schema.return_value = return_value
|
||||
|
||||
self.factory.data_source.get_schema()
|
||||
new_return_value = [{"name": "new_table", "columns": []}]
|
||||
new_return_value = [{"name": "new_table", "columns": [], "description": None}]
|
||||
patched_get_schema.return_value = new_return_value
|
||||
schema = self.factory.data_source.get_schema(refresh=True)
|
||||
|
||||
@@ -43,10 +43,11 @@ class DataSourceTest(BaseTestCase):
|
||||
|
||||
def test_schema_sorter(self):
|
||||
input_data = [
|
||||
{"name": "zoo", "columns": ["is_zebra", "is_snake", "is_cow"]},
|
||||
{"name": "zoo", "columns": ["is_zebra", "is_snake", "is_cow"], "description": None},
|
||||
{
|
||||
"name": "all_terain_vehicle",
|
||||
"columns": ["has_wheels", "has_engine", "has_all_wheel_drive"],
|
||||
"description": None,
|
||||
},
|
||||
]
|
||||
|
||||
@@ -54,8 +55,9 @@ class DataSourceTest(BaseTestCase):
|
||||
{
|
||||
"name": "all_terain_vehicle",
|
||||
"columns": ["has_all_wheel_drive", "has_engine", "has_wheels"],
|
||||
"description": None,
|
||||
},
|
||||
{"name": "zoo", "columns": ["is_cow", "is_snake", "is_zebra"]},
|
||||
{"name": "zoo", "columns": ["is_cow", "is_snake", "is_zebra"], "description": None},
|
||||
]
|
||||
|
||||
real_output = self.factory.data_source._sort_schema(input_data)
|
||||
@@ -64,10 +66,11 @@ class DataSourceTest(BaseTestCase):
|
||||
|
||||
def test_model_uses_schema_sorter(self):
|
||||
orig_schema = [
|
||||
{"name": "zoo", "columns": ["is_zebra", "is_snake", "is_cow"]},
|
||||
{"name": "zoo", "columns": ["is_zebra", "is_snake", "is_cow"], "description": None},
|
||||
{
|
||||
"name": "all_terain_vehicle",
|
||||
"columns": ["has_wheels", "has_engine", "has_all_wheel_drive"],
|
||||
"description": None,
|
||||
},
|
||||
]
|
||||
|
||||
@@ -75,8 +78,9 @@ class DataSourceTest(BaseTestCase):
|
||||
{
|
||||
"name": "all_terain_vehicle",
|
||||
"columns": ["has_all_wheel_drive", "has_engine", "has_wheels"],
|
||||
"description": None,
|
||||
},
|
||||
{"name": "zoo", "columns": ["is_cow", "is_snake", "is_zebra"]},
|
||||
{"name": "zoo", "columns": ["is_cow", "is_snake", "is_zebra"], "description": None},
|
||||
]
|
||||
|
||||
with mock.patch("redash.query_runner.pg.PostgreSQL.get_schema") as patched_get_schema:
|
||||
|
||||
@@ -75,7 +75,9 @@ class TestGlueSchema(TestCase):
|
||||
{"DatabaseName": "test1"},
|
||||
)
|
||||
with self.stubber:
|
||||
assert query_runner.get_schema() == [{"columns": ["row_id"], "name": "test1.jdbc_table"}]
|
||||
assert query_runner.get_schema() == [
|
||||
{"columns": [{"name": "row_id", "type": "int"}], "name": "test1.jdbc_table", "description": None}
|
||||
]
|
||||
|
||||
def test_partitioned_table(self):
|
||||
"""
|
||||
@@ -124,7 +126,16 @@ class TestGlueSchema(TestCase):
|
||||
{"DatabaseName": "test1"},
|
||||
)
|
||||
with self.stubber:
|
||||
assert query_runner.get_schema() == [{"columns": ["sk", "category"], "name": "test1.partitioned_table"}]
|
||||
assert query_runner.get_schema() == [
|
||||
{
|
||||
"columns": [
|
||||
{"name": "sk", "type": "partition (int)"},
|
||||
{"name": "category", "type": "partition", "idx": 0},
|
||||
],
|
||||
"name": "test1.partitioned_table",
|
||||
"description": None,
|
||||
}
|
||||
]
|
||||
|
||||
def test_view(self):
|
||||
query_runner = Athena({"glue": True, "region": "mars-east-1"})
|
||||
@@ -156,7 +167,9 @@ class TestGlueSchema(TestCase):
|
||||
{"DatabaseName": "test1"},
|
||||
)
|
||||
with self.stubber:
|
||||
assert query_runner.get_schema() == [{"columns": ["sk"], "name": "test1.view"}]
|
||||
assert query_runner.get_schema() == [
|
||||
{"columns": [{"name": "sk", "type": "int"}], "name": "test1.view", "description": None}
|
||||
]
|
||||
|
||||
def test_dodgy_table_does_not_break_schema_listing(self):
|
||||
"""
|
||||
@@ -196,7 +209,9 @@ class TestGlueSchema(TestCase):
|
||||
{"DatabaseName": "test1"},
|
||||
)
|
||||
with self.stubber:
|
||||
assert query_runner.get_schema() == [{"columns": ["region"], "name": "test1.csv"}]
|
||||
assert query_runner.get_schema() == [
|
||||
{"columns": [{"name": "region", "type": "string"}], "name": "test1.csv", "description": None}
|
||||
]
|
||||
|
||||
def test_no_storage_descriptor_table(self):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user