mirror of
https://github.com/apache/superset.git
synced 2026-04-19 16:14:52 +00:00
chore: add unit tests for the current import functionality (#11786)
* chore: add unit tests for the current import functionality * Improve comment * Fix unit test
This commit is contained in:
@@ -25,14 +25,18 @@ import yaml
|
||||
from superset import db, security_manager
|
||||
from superset.commands.exceptions import CommandInvalidError
|
||||
from superset.commands.importers.exceptions import IncorrectVersionError
|
||||
from superset.connectors.sqla.models import SqlaTable
|
||||
from superset.dashboards.commands.exceptions import DashboardNotFoundError
|
||||
from superset.dashboards.commands.export import ExportDashboardsCommand
|
||||
from superset.dashboards.commands.importers.v1 import ImportDashboardsCommand
|
||||
from superset.dashboards.commands.importers import v0, v1
|
||||
from superset.models.core import Database
|
||||
from superset.models.dashboard import Dashboard
|
||||
from superset.models.slice import Slice
|
||||
from tests.base_tests import SupersetTestCase
|
||||
from tests.fixtures.importexport import (
|
||||
chart_config,
|
||||
dashboard_config,
|
||||
dashboard_export,
|
||||
dashboard_metadata_config,
|
||||
database_config,
|
||||
dataset_config,
|
||||
@@ -205,6 +209,45 @@ class TestExportDashboardsCommand(SupersetTestCase):
|
||||
|
||||
|
||||
class TestImportDashboardsCommand(SupersetTestCase):
|
||||
def test_import_v0_dashboard_cli_export(self):
|
||||
num_dashboards = db.session.query(Dashboard).count()
|
||||
num_charts = db.session.query(Slice).count()
|
||||
num_datasets = db.session.query(SqlaTable).count()
|
||||
num_databases = db.session.query(Database).count()
|
||||
|
||||
contents = {
|
||||
"20201119_181105.json": json.dumps(dashboard_export),
|
||||
}
|
||||
command = v0.ImportDashboardsCommand(contents)
|
||||
command.run()
|
||||
|
||||
new_num_dashboards = db.session.query(Dashboard).count()
|
||||
new_num_charts = db.session.query(Slice).count()
|
||||
new_num_datasets = db.session.query(SqlaTable).count()
|
||||
new_num_databases = db.session.query(Database).count()
|
||||
assert new_num_dashboards == num_dashboards + 1
|
||||
assert new_num_charts == num_charts + 1
|
||||
assert new_num_datasets == num_datasets + 1
|
||||
assert new_num_databases == num_databases
|
||||
|
||||
dashboard = (
|
||||
db.session.query(Dashboard).filter_by(dashboard_title="Births 2").one()
|
||||
)
|
||||
assert len(dashboard.slices) == 1
|
||||
chart = dashboard.slices[0]
|
||||
assert chart.slice_name == "Number of California Births"
|
||||
|
||||
dataset = chart.table
|
||||
assert dataset.table_name == "birth_names_2"
|
||||
|
||||
database = dataset.database
|
||||
assert database.database_name == "examples"
|
||||
|
||||
db.session.delete(dashboard)
|
||||
db.session.delete(chart)
|
||||
db.session.delete(dataset)
|
||||
db.session.commit()
|
||||
|
||||
def test_import_v1_dashboard(self):
|
||||
"""Test that we can import a dashboard"""
|
||||
contents = {
|
||||
@@ -214,7 +257,7 @@ class TestImportDashboardsCommand(SupersetTestCase):
|
||||
"charts/imported_chart.yaml": yaml.safe_dump(chart_config),
|
||||
"dashboards/imported_dashboard.yaml": yaml.safe_dump(dashboard_config),
|
||||
}
|
||||
command = ImportDashboardsCommand(contents)
|
||||
command = v1.ImportDashboardsCommand(contents)
|
||||
command.run()
|
||||
|
||||
dashboard = (
|
||||
@@ -296,7 +339,7 @@ class TestImportDashboardsCommand(SupersetTestCase):
|
||||
"charts/imported_chart.yaml": yaml.safe_dump(chart_config),
|
||||
"dashboards/imported_dashboard.yaml": yaml.safe_dump(dashboard_config),
|
||||
}
|
||||
command = ImportDashboardsCommand(contents)
|
||||
command = v1.ImportDashboardsCommand(contents)
|
||||
command.run()
|
||||
command.run()
|
||||
|
||||
@@ -325,7 +368,7 @@ class TestImportDashboardsCommand(SupersetTestCase):
|
||||
"charts/imported_chart.yaml": yaml.safe_dump(chart_config),
|
||||
"dashboards/imported_dashboard.yaml": yaml.safe_dump(dashboard_config),
|
||||
}
|
||||
command = ImportDashboardsCommand(contents)
|
||||
command = v1.ImportDashboardsCommand(contents)
|
||||
with pytest.raises(IncorrectVersionError) as excinfo:
|
||||
command.run()
|
||||
assert str(excinfo.value) == "Missing metadata.yaml"
|
||||
@@ -338,14 +381,14 @@ class TestImportDashboardsCommand(SupersetTestCase):
|
||||
"timestamp": "2020-11-04T21:27:44.423819+00:00",
|
||||
}
|
||||
)
|
||||
command = ImportDashboardsCommand(contents)
|
||||
command = v1.ImportDashboardsCommand(contents)
|
||||
with pytest.raises(IncorrectVersionError) as excinfo:
|
||||
command.run()
|
||||
assert str(excinfo.value) == "Must be equal to 1.0.0."
|
||||
|
||||
# type should be Database
|
||||
contents["metadata.yaml"] = yaml.safe_dump(dataset_metadata_config)
|
||||
command = ImportDashboardsCommand(contents)
|
||||
command = v1.ImportDashboardsCommand(contents)
|
||||
with pytest.raises(CommandInvalidError) as excinfo:
|
||||
command.run()
|
||||
assert str(excinfo.value) == "Error importing dashboard"
|
||||
@@ -358,7 +401,7 @@ class TestImportDashboardsCommand(SupersetTestCase):
|
||||
del broken_config["table_name"]
|
||||
contents["metadata.yaml"] = yaml.safe_dump(dashboard_metadata_config)
|
||||
contents["datasets/imported_dataset.yaml"] = yaml.safe_dump(broken_config)
|
||||
command = ImportDashboardsCommand(contents)
|
||||
command = v1.ImportDashboardsCommand(contents)
|
||||
with pytest.raises(CommandInvalidError) as excinfo:
|
||||
command.run()
|
||||
assert str(excinfo.value) == "Error importing dashboard"
|
||||
|
||||
Reference in New Issue
Block a user