feat: import external management columns (#19315)

* feat: import flags

* Add tests
This commit is contained in:
Beto Dealmeida
2022-03-24 10:41:22 -07:00
committed by GitHub
parent 3313530f4d
commit c7f9060a2f
20 changed files with 362 additions and 2 deletions

View File

@@ -16,6 +16,7 @@
# under the License.
# pylint: disable=import-outside-toplevel, unused-argument, unused-import, invalid-name
import copy
import json
import uuid
from typing import Any, Dict
@@ -199,6 +200,7 @@ def test_import_column_extra_is_string(app_context: None, session: Session) -> N
"database_uuid": database.uuid,
}
# the Marshmallow schema should convert strings to objects
schema = ImportV1DatasetSchema()
dataset_config = schema.load(yaml_config)
dataset_config["database_id"] = database.id
@@ -207,3 +209,31 @@ def test_import_column_extra_is_string(app_context: None, session: Session) -> N
assert sqla_table.metrics[0].extra == '{"warning_markdown": null}'
assert sqla_table.columns[0].extra == '{"certified_by": "User"}'
assert sqla_table.extra == '{"warning_markdown": "*WARNING*"}'
def test_import_dataset_managed_externally(app_context: None, session: Session) -> None:
"""
Test importing a dataset that is managed externally.
"""
from superset.connectors.sqla.models import SqlaTable, SqlMetric, TableColumn
from superset.datasets.commands.importers.v1.utils import import_dataset
from superset.datasets.schemas import ImportV1DatasetSchema
from superset.models.core import Database
from tests.integration_tests.fixtures.importexport import dataset_config
engine = session.get_bind()
SqlaTable.metadata.create_all(engine) # pylint: disable=no-member
database = Database(database_name="my_database", sqlalchemy_uri="sqlite://")
session.add(database)
session.flush()
dataset_uuid = uuid.uuid4()
config = copy.deepcopy(dataset_config)
config["is_managed_externally"] = True
config["external_url"] = "https://example.org/my_table"
config["database_id"] = database.id
sqla_table = import_dataset(session, config)
assert sqla_table.is_managed_externally is True
assert sqla_table.external_url == "https://example.org/my_table"