From 114e8673c1edcd47292546aa4a3841e85a53fa97 Mon Sep 17 00:00:00 2001 From: Ville Brofeldt Date: Mon, 14 Aug 2023 20:52:02 -0700 Subject: [PATCH] fix tests --- superset/connectors/sqla/models.py | 2 +- superset/datasets/schemas.py | 1 + ...09-38_9f4a086c2676_add_normalize_columns_to_sqla_model.py | 5 +++-- superset/views/datasource/views.py | 2 ++ tests/integration_tests/core_tests.py | 4 +--- tests/integration_tests/datasets/commands_tests.py | 1 + tests/integration_tests/fixtures/importexport.py | 3 ++- tests/integration_tests/import_export_tests.py | 5 ++++- 8 files changed, 15 insertions(+), 8 deletions(-) diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py index 98a8ebf55c42e..adeddaa009130 100644 --- a/superset/connectors/sqla/models.py +++ b/superset/connectors/sqla/models.py @@ -546,7 +546,7 @@ class SqlaTable( is_sqllab_view = Column(Boolean, default=False) template_params = Column(Text) extra = Column(Text) - normalize_columns = Column(Boolean) + normalize_columns = Column(Boolean, default=False) baselink = "tablemodelview" diff --git a/superset/datasets/schemas.py b/superset/datasets/schemas.py index ab6ce8b8ebc9d..66d80e1842b9a 100644 --- a/superset/datasets/schemas.py +++ b/superset/datasets/schemas.py @@ -249,6 +249,7 @@ def fix_extra(self, data: dict[str, Any], **kwargs: Any) -> dict[str, Any]: data = fields.URL() is_managed_externally = fields.Boolean(allow_none=True, dump_default=False) external_url = fields.String(allow_none=True) + normalize_columns = fields.Boolean(load_default=False) class GetOrCreateDatasetSchema(Schema): diff --git a/superset/migrations/versions/2023-08-14_09-38_9f4a086c2676_add_normalize_columns_to_sqla_model.py b/superset/migrations/versions/2023-08-14_09-38_9f4a086c2676_add_normalize_columns_to_sqla_model.py index 035ac96a7d02e..8eaee8207ce0b 100644 --- a/superset/migrations/versions/2023-08-14_09-38_9f4a086c2676_add_normalize_columns_to_sqla_model.py +++ b/superset/migrations/versions/2023-08-14_09-38_9f4a086c2676_add_normalize_columns_to_sqla_model.py @@ -41,7 +41,7 @@ class SqlaTable(Base): __tablename__ = "tables" id = sa.Column(sa.Integer, primary_key=True) - normalize_columns = sa.Column(sa.Boolean) + normalize_columns = sa.Column(sa.Boolean()) def upgrade(): @@ -50,7 +50,8 @@ def upgrade(): sa.Column( "normalize_columns", sa.Boolean(), - nullable=False, + nullable=True, + default=False, server_default=sa.false(), ), ) diff --git a/superset/views/datasource/views.py b/superset/views/datasource/views.py index 363afbeafcde1..b2fd387379fd9 100644 --- a/superset/views/datasource/views.py +++ b/superset/views/datasource/views.py @@ -77,6 +77,8 @@ def save(self) -> FlaskResponse: return json_error_response(_("Request missing data field."), status=500) datasource_dict = json.loads(data) + normalize_columns = datasource_dict.get("normalize_columns", False) + datasource_dict["normalize_columns"] = normalize_columns datasource_id = datasource_dict.get("id") datasource_type = datasource_dict.get("type") database_id = datasource_dict["database"].get("id") diff --git a/tests/integration_tests/core_tests.py b/tests/integration_tests/core_tests.py index ddcfa189b2b28..9d034cdbcbd5e 100644 --- a/tests/integration_tests/core_tests.py +++ b/tests/integration_tests/core_tests.py @@ -43,10 +43,9 @@ from superset.connectors.sqla.models import SqlaTable from superset.db_engine_specs.base import BaseEngineSpec from superset.db_engine_specs.mssql import MssqlEngineSpec -from superset.exceptions import QueryObjectValidationError, SupersetException +from superset.exceptions import SupersetException from superset.extensions import async_query_manager, cache_manager from superset.models import core as models -from superset.models.annotations import Annotation, AnnotationLayer from superset.models.cache import CacheKey from superset.models.dashboard import Dashboard from superset.models.slice import Slice @@ -56,7 +55,6 @@ from superset.utils import core as utils from superset.utils.core import backend from superset.utils.database import get_example_database -from superset.views import core as views from superset.views.database.views import DatabaseView from tests.integration_tests.conftest import CTAS_SCHEMA_NAME, with_feature_flags from tests.integration_tests.fixtures.birth_names_dashboard import ( diff --git a/tests/integration_tests/datasets/commands_tests.py b/tests/integration_tests/datasets/commands_tests.py index d9771bbe1b403..19caa9e1a111a 100644 --- a/tests/integration_tests/datasets/commands_tests.py +++ b/tests/integration_tests/datasets/commands_tests.py @@ -230,6 +230,7 @@ def test_export_dataset_command_key_order(self, mock_g): "filter_select_enabled", "fetch_values_predicate", "extra", + "normalize_columns", "uuid", "metrics", "columns", diff --git a/tests/integration_tests/fixtures/importexport.py b/tests/integration_tests/fixtures/importexport.py index 34ef8ed4f2b13..cda9dd0bcc379 100644 --- a/tests/integration_tests/fixtures/importexport.py +++ b/tests/integration_tests/fixtures/importexport.py @@ -312,6 +312,7 @@ "sql": None, "table_name": "birth_names_2", "template_params": None, + "normalize_columns": False, } } ], @@ -494,6 +495,7 @@ "sql": "", "params": None, "template_params": {}, + "normalize_columns": False, "filter_select_enabled": True, "fetch_values_predicate": None, "extra": '{ "certification": { "certified_by": "Data Platform Team", "details": "This table is the source of truth." }, "warning_markdown": "This is a warning." }', @@ -523,7 +525,6 @@ "python_date_format": None, }, ], - "normalize_columns": False, "version": "1.0.0", "uuid": "10808100-158b-42c4-842e-f32b99d88dfb", "database_uuid": "b8a1ccd3-779d-4ab7-8ad8-9ab119d7fe89", diff --git a/tests/integration_tests/import_export_tests.py b/tests/integration_tests/import_export_tests.py index d44745377f562..f3a2a09eef1d2 100644 --- a/tests/integration_tests/import_export_tests.py +++ b/tests/integration_tests/import_export_tests.py @@ -122,7 +122,10 @@ def create_dashboard(self, title, id=0, slcs=[]): def create_table(self, name, schema=None, id=0, cols_names=[], metric_names=[]): params = {"remote_id": id, "database_name": "examples"} table = SqlaTable( - id=id, schema=schema, table_name=name, params=json.dumps(params) + id=id, + schema=schema, + table_name=name, + params=json.dumps(params), ) for col_name in cols_names: table.columns.append(TableColumn(column_name=col_name))