mirror of
https://github.com/apache/superset.git
synced 2026-04-14 13:44:46 +00:00
feat: Add excel export (#22006)
Co-authored-by: Igor Șincariov <igorsinc@pm.me> Co-authored-by: EugeneTorap <evgenykrutpro@gmail.com>
This commit is contained in:
@@ -255,6 +255,16 @@ class TestPostChartDataApi(BaseTestChartDataApi):
|
||||
rv = self.post_assert_metric(CHART_DATA_URI, self.query_context_payload, "data")
|
||||
assert rv.status_code == 400
|
||||
|
||||
@pytest.mark.usefixtures("load_birth_names_dashboard_with_slices")
|
||||
def test_empty_request_with_excel_result_format(self):
|
||||
"""
|
||||
Chart data API: Test empty chart data with Excel result format
|
||||
"""
|
||||
self.query_context_payload["result_format"] = "xlsx"
|
||||
self.query_context_payload["queries"] = []
|
||||
rv = self.post_assert_metric(CHART_DATA_URI, self.query_context_payload, "data")
|
||||
assert rv.status_code == 400
|
||||
|
||||
@pytest.mark.usefixtures("load_birth_names_dashboard_with_slices")
|
||||
def test_with_csv_result_format(self):
|
||||
"""
|
||||
@@ -265,6 +275,17 @@ class TestPostChartDataApi(BaseTestChartDataApi):
|
||||
assert rv.status_code == 200
|
||||
assert rv.mimetype == "text/csv"
|
||||
|
||||
@pytest.mark.usefixtures("load_birth_names_dashboard_with_slices")
|
||||
def test_with_excel_result_format(self):
|
||||
"""
|
||||
Chart data API: Test chart data with Excel result format
|
||||
"""
|
||||
self.query_context_payload["result_format"] = "xlsx"
|
||||
mimetype = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
||||
rv = self.post_assert_metric(CHART_DATA_URI, self.query_context_payload, "data")
|
||||
assert rv.status_code == 200
|
||||
assert rv.mimetype == mimetype
|
||||
|
||||
@pytest.mark.usefixtures("load_birth_names_dashboard_with_slices")
|
||||
def test_with_multi_query_csv_result_format(self):
|
||||
"""
|
||||
@@ -280,6 +301,21 @@ class TestPostChartDataApi(BaseTestChartDataApi):
|
||||
zipfile = ZipFile(BytesIO(rv.data), "r")
|
||||
assert zipfile.namelist() == ["query_1.csv", "query_2.csv"]
|
||||
|
||||
@pytest.mark.usefixtures("load_birth_names_dashboard_with_slices")
|
||||
def test_with_multi_query_excel_result_format(self):
|
||||
"""
|
||||
Chart data API: Test chart data with multi-query Excel result format
|
||||
"""
|
||||
self.query_context_payload["result_format"] = "xlsx"
|
||||
self.query_context_payload["queries"].append(
|
||||
self.query_context_payload["queries"][0]
|
||||
)
|
||||
rv = self.post_assert_metric(CHART_DATA_URI, self.query_context_payload, "data")
|
||||
assert rv.status_code == 200
|
||||
assert rv.mimetype == "application/zip"
|
||||
zipfile = ZipFile(BytesIO(rv.data), "r")
|
||||
assert zipfile.namelist() == ["query_1.xlsx", "query_2.xlsx"]
|
||||
|
||||
@pytest.mark.usefixtures("load_birth_names_dashboard_with_slices")
|
||||
def test_with_csv_result_format_when_actor_not_permitted_for_csv__403(self):
|
||||
"""
|
||||
@@ -292,6 +328,18 @@ class TestPostChartDataApi(BaseTestChartDataApi):
|
||||
rv = self.post_assert_metric(CHART_DATA_URI, self.query_context_payload, "data")
|
||||
assert rv.status_code == 403
|
||||
|
||||
@pytest.mark.usefixtures("load_birth_names_dashboard_with_slices")
|
||||
def test_with_excel_result_format_when_actor_not_permitted_for_excel__403(self):
|
||||
"""
|
||||
Chart data API: Test chart data with Excel result format
|
||||
"""
|
||||
self.logout()
|
||||
self.login(username="gamma_no_csv")
|
||||
self.query_context_payload["result_format"] = "xlsx"
|
||||
|
||||
rv = self.post_assert_metric(CHART_DATA_URI, self.query_context_payload, "data")
|
||||
assert rv.status_code == 403
|
||||
|
||||
@pytest.mark.usefixtures("load_birth_names_dashboard_with_slices")
|
||||
def test_with_row_limit_and_offset__row_limit_and_offset_were_applied(self):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user