Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 6 additions & 22 deletions src/preset_cli/cli/superset/sync/dbt/command.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,6 @@
default=False,
help="Do not sync models to datasets and only fetch exposures instead",
)
@click.option(
"--preserve-columns",
is_flag=True,
default=False,
help="Preserve column and metric configurations defined in Preset",
)
@click.option(
"--preserve-metadata",
is_flag=True,
Expand Down Expand Up @@ -124,7 +118,6 @@ def dbt_core( # pylint: disable=too-many-arguments, too-many-branches, too-many
disallow_edits: bool = False,
external_url_prefix: str = "",
exposures_only: bool = False,
preserve_columns: bool = False,
preserve_metadata: bool = False,
merge_metadata: bool = False,
raise_failures: bool = False,
Expand All @@ -137,15 +130,14 @@ def dbt_core( # pylint: disable=too-many-arguments, too-many-branches, too-many
client = SupersetClient(url, auth)
deprecation_notice: bool = False

if (preserve_columns or preserve_metadata) and merge_metadata:
if preserve_metadata and merge_metadata:
error_message = (
"``--preserve-columns`` / ``--preserve-metadata`` and ``--merge-metadata``\n"
"``--preserve-metadata`` and ``--merge-metadata``\n"
"can't be combined. Please include only one to the command."
)
raise CLIError(error_message, 1)

reload_columns = not (preserve_columns or preserve_metadata or merge_metadata)
preserve_metadata = preserve_columns if preserve_columns else preserve_metadata
reload_columns = not (preserve_metadata or merge_metadata)

if profiles is None:
profiles = os.path.expanduser("~/.dbt/profiles.yml")
Expand Down Expand Up @@ -506,12 +498,6 @@ def fetch_sl_metrics(
default=False,
help="Do not sync models to datasets and only fetch exposures instead",
)
@click.option(
"--preserve-columns",
is_flag=True,
default=False,
help="Preserve column and metric configurations defined in Preset",
)
@click.option(
"--preserve-metadata",
is_flag=True,
Expand Down Expand Up @@ -548,7 +534,6 @@ def dbt_cloud( # pylint: disable=too-many-arguments, too-many-locals
disallow_edits: bool = False,
external_url_prefix: str = "",
exposures_only: bool = False,
preserve_columns: bool = False,
preserve_metadata: bool = False,
merge_metadata: bool = False,
access_url: Optional[str] = None,
Expand All @@ -564,15 +549,14 @@ def dbt_cloud( # pylint: disable=too-many-arguments, too-many-locals
dbt_auth = TokenAuth(token)
dbt_client = DBTClient(dbt_auth, access_url)

if (preserve_columns or preserve_metadata) and merge_metadata:
if preserve_metadata and merge_metadata:
error_message = (
"``--preserve-columns`` / ``--preserve-metadata`` and ``--merge-metadata``\n"
"``--preserve-metadata`` and ``--merge-metadata``\n"
"can't be combined. Please include only one to the command."
)
raise CLIError(error_message, 1)

reload_columns = not (preserve_columns or preserve_metadata or merge_metadata)
preserve_metadata = preserve_columns if preserve_columns else preserve_metadata
reload_columns = not (preserve_metadata or merge_metadata)

try:
job = get_job(dbt_client, account_id, project_id, job_id)
Expand Down
135 changes: 2 additions & 133 deletions tests/cli/superset/sync/dbt/command_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -1788,75 +1788,6 @@ def test_dbt_core_preserve_metadata(
)


def test_dbt_core_preserve_columns(
mocker: MockerFixture,
fs: FakeFilesystem,
) -> None:
"""
Test the ``dbt-core`` command with ``--preserve-columns`` flag.
"""
root = Path("/path/to/root")
fs.create_dir(root)
manifest = root / "default/target/manifest.json"
fs.create_file(manifest, contents=manifest_contents)
profiles = root / ".dbt/profiles.yml"
fs.create_file(profiles, contents=profiles_contents)

SupersetClient = mocker.patch(
"preset_cli.cli.superset.sync.dbt.command.SupersetClient",
)
client = SupersetClient()
mocker.patch("preset_cli.cli.superset.main.UsernamePasswordAuth")
sync_database = mocker.patch(
"preset_cli.cli.superset.sync.dbt.command.sync_database",
)
sync_datasets = mocker.patch(
"preset_cli.cli.superset.sync.dbt.command.sync_datasets",
return_value=([], []),
)

runner = CliRunner()
result = runner.invoke(
superset_cli,
[
"https://superset.example.org/",
"sync",
"dbt-core",
str(manifest),
"--profiles",
str(profiles),
"--preserve-columns",
"--project",
"default",
"--target",
"dev",
],
catch_exceptions=False,
)
assert result.exit_code == 0
sync_database.assert_called_with(
client,
profiles,
"default",
"default",
"dev",
False,
False,
"",
)

sync_datasets.assert_called_with(
client,
dbt_core_models,
superset_metrics,
sync_database(),
False,
"",
reload_columns=False,
merge_metadata=False,
)


def test_dbt_core_merge_metadata(
mocker: MockerFixture,
fs: FakeFilesystem,
Expand Down Expand Up @@ -2372,10 +2303,7 @@ def test_dbt_core_preserve_and_merge(
catch_exceptions=False,
)
assert result.exit_code == 1
assert (
"``--preserve-columns`` / ``--preserve-metadata`` and ``--merge-metadata``"
in result.output
)
assert "``--preserve-metadata`` and ``--merge-metadata``" in result.output
assert "can't be combined. Please include only one to the command." in result.output


Expand Down Expand Up @@ -3139,62 +3067,6 @@ def test_dbt_cloud_preserve_metadata(mocker: MockerFixture) -> None:
)


def test_dbt_cloud_preserve_columns(mocker: MockerFixture) -> None:
"""
Test the ``dbt-cloud`` command with the ``--preserve-columns`` flag.
"""
SupersetClient = mocker.patch(
"preset_cli.cli.superset.sync.dbt.command.SupersetClient",
)
superset_client = SupersetClient()
mocker.patch("preset_cli.cli.superset.main.UsernamePasswordAuth")
DBTClient = mocker.patch(
"preset_cli.cli.superset.sync.dbt.command.DBTClient",
)
dbt_client = DBTClient()
sync_datasets = mocker.patch(
"preset_cli.cli.superset.sync.dbt.command.sync_datasets",
return_value=([], []),
)
mocker.patch(
"preset_cli.cli.superset.sync.dbt.command.get_job",
return_value={"id": 123, "name": "My job", "environment_id": 456},
)

dbt_client.get_models.return_value = dbt_cloud_models
dbt_client.get_og_metrics.return_value = dbt_cloud_metrics
database = mocker.MagicMock()
superset_client.get_databases.return_value = [database]
superset_client.get_database.return_value = database

runner = CliRunner()
result = runner.invoke(
superset_cli,
[
"https://superset.example.org/",
"sync",
"dbt-cloud",
"XXX",
"1",
"2",
"123",
"--preserve-columns",
],
catch_exceptions=False,
)
assert result.exit_code == 0
sync_datasets.assert_called_with(
superset_client,
dbt_cloud_models,
superset_metrics,
database,
False,
"",
reload_columns=False,
merge_metadata=False,
)


def test_dbt_cloud_merge_metadata(mocker: MockerFixture) -> None:
"""
Test the ``dbt-cloud`` command with the ``--merge-metadata`` flag.
Expand Down Expand Up @@ -3421,10 +3293,7 @@ def test_dbt_cloud_preserve_and_merge(mocker: MockerFixture) -> None:
catch_exceptions=False,
)
assert result.exit_code == 1
assert (
"``--preserve-columns`` / ``--preserve-metadata`` and ``--merge-metadata``"
in result.output
)
assert "``--preserve-metadata`` and ``--merge-metadata``" in result.output
assert "can't be combined. Please include only one to the command." in result.output


Expand Down
Loading