From b13d953b34d6591850f1197fe4e17cb345d4cc0b Mon Sep 17 00:00:00 2001 From: AAfghahi <48933336+AAfghahi@users.noreply.github.com> Date: Thu, 2 Dec 2021 11:46:25 -0500 Subject: [PATCH] chore: Added unit test to query context change (#17624) * a lot of console logs * added unit test --- .../charts/commands_tests.py | 44 +++++++++++++++++++ .../fixtures/energy_dashboard.py | 1 + 2 files changed, 45 insertions(+) diff --git a/tests/integration_tests/charts/commands_tests.py b/tests/integration_tests/charts/commands_tests.py index 6d578b88aae43..caedb6a0b3d54 100644 --- a/tests/integration_tests/charts/commands_tests.py +++ b/tests/integration_tests/charts/commands_tests.py @@ -68,6 +68,7 @@ def test_export_chart_command(self, mock_g): metadata = yaml.safe_load( contents[f"charts/Energy_Sankey_{example_chart.id}.yaml"] ) + assert metadata == { "slice_name": "Energy Sankey", "viz_type": "sankey", @@ -85,6 +86,49 @@ def test_export_chart_command(self, mock_g): "version": "1.0.0", } + @patch("superset.security.manager.g") + @pytest.mark.usefixtures("load_energy_table_with_slice") + def test_export_chart_with_query_context(self, mock_g): + """Test that charts that have a query_context are exported correctly""" + + mock_g.user = security_manager.find_user("alpha") + example_chart = db.session.query(Slice).filter_by(slice_name="Heatmap").one() + command = ExportChartsCommand([example_chart.id]) + + contents = dict(command.run()) + + expected = [ + "metadata.yaml", + f"charts/Heatmap_{example_chart.id}.yaml", + "datasets/examples/energy_usage.yaml", + "databases/examples.yaml", + ] + assert expected == list(contents.keys()) + + metadata = yaml.safe_load(contents[f"charts/Heatmap_{example_chart.id}.yaml"]) + + assert metadata == { + "slice_name": "Heatmap", + "viz_type": "heatmap", + "params": { + "all_columns_x": "source", + "all_columns_y": "target", + "canvas_image_rendering": "pixelated", + "collapsed_fieldsets": "", + "linear_color_scheme": "blue_white_yellow", + "metric": "sum__value", + "normalize_across": "heatmap", + "slice_name": "Heatmap", + "viz_type": "heatmap", + "xscale_interval": "1", + "yscale_interval": "1", + }, + "cache_timeout": None, + "dataset_uuid": str(example_chart.table.uuid), + "uuid": str(example_chart.uuid), + "version": "1.0.0", + } + @patch("superset.security.manager.g") @pytest.mark.usefixtures("load_energy_table_with_slice") def test_export_chart_command_no_access(self, mock_g): diff --git a/tests/integration_tests/fixtures/energy_dashboard.py b/tests/integration_tests/fixtures/energy_dashboard.py index 2c25eecdc26e5..14471052543c7 100644 --- a/tests/integration_tests/fixtures/energy_dashboard.py +++ b/tests/integration_tests/fixtures/energy_dashboard.py @@ -173,5 +173,6 @@ def _get_energy_slices(): "xscale_interval": "1", "yscale_interval": "1", }, + "query_context": '{"datasource":{"id":12,"type":"table"},"force":false,"queries":[{"time_range":" : ","filters":[],"extras":{"time_grain_sqla":null,"having":"","having_druid":[],"where":""},"applied_time_extras":{},"columns":[],"metrics":[],"annotation_layers":[],"row_limit":5000,"timeseries_limit":0,"order_desc":true,"url_params":{},"custom_params":{},"custom_form_data":{}}],"result_format":"json","result_type":"full"}', }, ]