This is an automated email from the ASF dual-hosted git repository.
willbarrett pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push:
new 9caf875 Refactored api_tests in charts. Split filter test into
several unit tests cases. Added table id based on database id (#11249)
9caf875 is described below
commit 9caf8752637066d76cc30fe35e630de9660425fb
Author: Kasia Kucharczyk <[email protected]>
AuthorDate: Wed Oct 14 21:41:37 2020 +0200
Refactored api_tests in charts. Split filter test into several unit tests
cases. Added table id based on database id (#11249)
---
tests/charts/api_tests.py | 69 ++++++++++++++++++++++++++++++++++++-----------
1 file changed, 54 insertions(+), 15 deletions(-)
diff --git a/tests/charts/api_tests.py b/tests/charts/api_tests.py
index 35fe939..ed4003b 100644
--- a/tests/charts/api_tests.py
+++ b/tests/charts/api_tests.py
@@ -27,6 +27,7 @@ import pytest
from sqlalchemy import and_
from sqlalchemy.sql import func
+from superset.connectors.sqla.models import SqlaTable
from superset.utils.core import get_example_database
from tests.fixtures.unicode_dashboard import load_unicode_dashboard_with_slice
from tests.test_app import app
@@ -620,16 +621,48 @@ class TestChartApi(SupersetTestCase,
ApiOwnersTestCaseMixin):
data = json.loads(rv.data.decode("utf-8"))
self.assertEqual(data["count"], 5)
+ @pytest.fixture()
+ def load_charts(self):
+ with app.app_context():
+ admin = self.get_user("admin")
+ energy_table = (
+ db.session.query(SqlaTable)
+ .filter_by(table_name="energy_usage")
+ .one_or_none()
+ )
+ energy_table_id = 1
+ if energy_table:
+ energy_table_id = energy_table.id
+ chart1 = self.insert_chart(
+ "foo_a", [admin.id], energy_table_id, description="ZY_bar"
+ )
+ chart2 = self.insert_chart(
+ "zy_foo", [admin.id], energy_table_id, description="desc1"
+ )
+ chart3 = self.insert_chart(
+ "foo_b", [admin.id], energy_table_id, description="desc1zy_"
+ )
+ chart4 = self.insert_chart(
+ "foo_c", [admin.id], energy_table_id, viz_type="viz_zy_"
+ )
+ chart5 = self.insert_chart(
+ "bar", [admin.id], energy_table_id, description="foo"
+ )
+
+ yield
+ # rollback changes
+ db.session.delete(chart1)
+ db.session.delete(chart2)
+ db.session.delete(chart3)
+ db.session.delete(chart4)
+ db.session.delete(chart5)
+ db.session.commit()
+
+ @pytest.mark.usefixtures("load_charts")
def test_get_charts_custom_filter(self):
"""
Chart API: Test get charts custom filter
"""
- admin = self.get_user("admin")
- chart1 = self.insert_chart("foo_a", [admin.id], 1,
description="ZY_bar")
- chart2 = self.insert_chart("zy_foo", [admin.id], 1,
description="desc1")
- chart3 = self.insert_chart("foo_b", [admin.id], 1,
description="desc1zy_")
- chart4 = self.insert_chart("foo_c", [admin.id], 1, viz_type="viz_zy_")
- chart5 = self.insert_chart("bar", [admin.id], 1, description="foo")
arguments = {
"filters": [{"col": "slice_name", "opr": "chart_all_text",
"value": "zy_"}],
@@ -658,6 +691,8 @@ class TestChartApi(SupersetTestCase,
ApiOwnersTestCaseMixin):
self.assertEqual(item["slice_name"],
expected_response[index]["slice_name"])
self.assertEqual(item["viz_type"],
expected_response[index]["viz_type"])
+ @pytest.mark.usefixtures("load_charts")
+ def test_admin_gets_filtered_energy_slices(self):
# test filtering on datasource_name
arguments = {
"filters": [
@@ -666,13 +701,25 @@ class TestChartApi(SupersetTestCase,
ApiOwnersTestCaseMixin):
"keys": ["none"],
"columns": ["slice_name"],
}
+ self.login(username="admin")
+
uri = f"api/v1/chart/?q={prison.dumps(arguments)}"
rv = self.get_assert_metric(uri, "get_list")
self.assertEqual(rv.status_code, 200)
data = json.loads(rv.data.decode("utf-8"))
self.assertEqual(data["count"], 8)
- self.logout()
+ @pytest.mark.usefixtures("load_charts")
+ def test_user_gets_none_filtered_energy_slices(self):
+ # test filtering on datasource_name
+ arguments = {
+ "filters": [
+ {"col": "slice_name", "opr": "chart_all_text", "value":
"energy",}
+ ],
+ "keys": ["none"],
+ "columns": ["slice_name"],
+ }
+
self.login(username="gamma")
uri = f"api/v1/chart/?q={prison.dumps(arguments)}"
rv = self.get_assert_metric(uri, "get_list")
@@ -680,14 +727,6 @@ class TestChartApi(SupersetTestCase,
ApiOwnersTestCaseMixin):
data = json.loads(rv.data.decode("utf-8"))
self.assertEqual(data["count"], 0)
- # rollback changes
- db.session.delete(chart1)
- db.session.delete(chart2)
- db.session.delete(chart3)
- db.session.delete(chart4)
- db.session.delete(chart5)
- db.session.commit()
-
@pytest.mark.usefixtures("create_charts")
def test_get_charts_favorite_filter(self):
"""