From 3873cdff4de9ccd5170cb0b10212bc34998bb3d0 Mon Sep 17 00:00:00 2001 From: Beto Dealmeida Date: Thu, 9 Dec 2021 09:47:53 -0800 Subject: [PATCH] feat: convert dataframe tests (#17655) --- tests/integration_tests/dataframe_test.py | 53 ---------------------- tests/unit_tests/conftest.py | 12 ++++- tests/unit_tests/dataframe_test.py | 55 +++++++++++++++++++++++ 3 files changed, 65 insertions(+), 55 deletions(-) delete mode 100644 tests/integration_tests/dataframe_test.py create mode 100644 tests/unit_tests/dataframe_test.py diff --git a/tests/integration_tests/dataframe_test.py b/tests/integration_tests/dataframe_test.py deleted file mode 100644 index 6d747edd73..0000000000 --- a/tests/integration_tests/dataframe_test.py +++ /dev/null @@ -1,53 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# isort:skip_file -import numpy as np -import pandas as pd - -import tests.integration_tests.test_app -from superset.dataframe import df_to_records -from superset.db_engine_specs import BaseEngineSpec -from superset.result_set import SupersetResultSet - -from .base_tests import SupersetTestCase - - -class TestSupersetDataFrame(SupersetTestCase): - def test_df_to_records(self): - data = [("a1", "b1", "c1"), ("a2", "b2", "c2")] - cursor_descr = (("a", "string"), ("b", "string"), ("c", "string")) - results = SupersetResultSet(data, cursor_descr, BaseEngineSpec) - df = results.to_pandas_df() - - self.assertEqual( - df_to_records(df), - [{"a": "a1", "b": "b1", "c": "c1"}, {"a": "a2", "b": "b2", "c": "c2"}], - ) - - def test_js_max_int(self): - data = [(1, 1239162456494753670, "c1"), (2, 100, "c2")] - cursor_descr = (("a", "int"), ("b", "int"), ("c", "string")) - results = SupersetResultSet(data, cursor_descr, BaseEngineSpec) - df = results.to_pandas_df() - - self.assertEqual( - df_to_records(df), - [ - {"a": 1, "b": "1239162456494753670", "c": "c1"}, - {"a": 2, "b": 100, "c": "c2"}, - ], - ) diff --git a/tests/unit_tests/conftest.py b/tests/unit_tests/conftest.py index 04d793a860..4700cd19f8 100644 --- a/tests/unit_tests/conftest.py +++ b/tests/unit_tests/conftest.py @@ -17,14 +17,22 @@ import pytest +from superset.app import SupersetApp +from superset.initialization import SupersetAppInitializer + @pytest.fixture def app_context(): """ A fixture for running the test inside an app context. """ - from superset.app import create_app + app = SupersetApp(__name__) + + app.config.from_object("superset.config") + app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite://" + + app_initializer = app.config.get("APP_INITIALIZER", SupersetAppInitializer)(app) + app_initializer.init_app() - app = create_app() with app.app_context(): yield diff --git a/tests/unit_tests/dataframe_test.py b/tests/unit_tests/dataframe_test.py new file mode 100644 index 0000000000..3e986a5e43 --- /dev/null +++ b/tests/unit_tests/dataframe_test.py @@ -0,0 +1,55 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# pylint: disable=unused-argument, import-outside-toplevel +from superset.dataframe import df_to_records +from superset.typing import DbapiDescription + + +def test_df_to_records(app_context: None) -> None: + from superset.db_engine_specs import BaseEngineSpec + from superset.result_set import SupersetResultSet + + data = [("a1", "b1", "c1"), ("a2", "b2", "c2")] + cursor_descr: DbapiDescription = [ + (column, "string", None, None, None, None, False) for column in ("a", "b", "c") + ] + results = SupersetResultSet(data, cursor_descr, BaseEngineSpec) + df = results.to_pandas_df() + + assert df_to_records(df) == [ + {"a": "a1", "b": "b1", "c": "c1"}, + {"a": "a2", "b": "b2", "c": "c2"}, + ] + + +def test_js_max_int(app_context: None) -> None: + from superset.db_engine_specs import BaseEngineSpec + from superset.result_set import SupersetResultSet + + data = [(1, 1239162456494753670, "c1"), (2, 100, "c2")] + cursor_descr: DbapiDescription = [ + ("a", "int", None, None, None, None, False), + ("b", "int", None, None, None, None, False), + ("c", "string", None, None, None, None, False), + ] + results = SupersetResultSet(data, cursor_descr, BaseEngineSpec) + df = results.to_pandas_df() + + assert df_to_records(df) == [ + {"a": 1, "b": "1239162456494753670", "c": "c1"}, + {"a": 2, "b": 100, "c": "c2"}, + ]