Skip to content
This repository was archived by the owner on May 17, 2024. It is now read-only.

Commit 0b2dcec

Browse files
authored
Merge pull request #531 from dlawin/issue_530
add support for two part id
2 parents ea68fb5 + 2a25391 commit 0b2dcec

File tree

2 files changed

+7
-46
lines changed

2 files changed

+7
-46
lines changed

data_diff/dbt.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,6 @@ def dbt_diff(
9393
else:
9494
dbt_parser.set_connection()
9595

96-
if config_prod_database is None:
97-
raise ValueError(
98-
"Expected a value for prod_database: OR prod_database: AND prod_schema: under \nvars:\n data_diff: "
99-
)
100-
10196
for model in models:
10297
diff_vars = _get_diff_vars(
10398
dbt_parser, config_prod_database, config_prod_schema, config_prod_custom_schema, model
@@ -154,12 +149,12 @@ def _get_diff_vars(
154149
prod_schema = dev_schema
155150

156151
if dbt_parser.requires_upper:
157-
dev_qualified_list = [x.upper() for x in [dev_database, dev_schema, model.alias]]
158-
prod_qualified_list = [x.upper() for x in [prod_database, prod_schema, model.alias]]
152+
dev_qualified_list = [x.upper() for x in [dev_database, dev_schema, model.alias] if x]
153+
prod_qualified_list = [x.upper() for x in [prod_database, prod_schema, model.alias] if x]
159154
primary_keys = [x.upper() for x in primary_keys]
160155
else:
161-
dev_qualified_list = [dev_database, dev_schema, model.alias]
162-
prod_qualified_list = [prod_database, prod_schema, model.alias]
156+
dev_qualified_list = [x for x in [dev_database, dev_schema, model.alias] if x]
157+
prod_qualified_list = [x for x in [prod_database, prod_schema, model.alias] if x]
163158

164159
where_filter = None
165160
if model.meta:
@@ -278,7 +273,7 @@ def _cloud_diff(diff_vars: DiffVars, datasource_id: int, api: DatafoldAPI) -> No
278273
try:
279274
diff_id = api.create_data_diff(payload=payload)
280275
diff_url = f"{api.host}/datadiffs/{diff_id}/overview"
281-
rich.print(f"{diff_vars.dev_path[2]}: {diff_url}")
276+
rich.print(f"{diff_vars.dev_path[-1]}: {diff_url}")
282277

283278
if diff_id is None:
284279
raise Exception(f"Api response did not contain a diff_id")

tests/test_dbt.py

Lines changed: 2 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -663,38 +663,6 @@ def test_diff_is_not_cloud(self, mock_print, mock_dbt_parser, mock_cloud_diff, m
663663
mock_local_diff.assert_called_once_with(expected_diff_vars)
664664
mock_print.assert_not_called()
665665

666-
@patch("data_diff.dbt._get_diff_vars")
667-
@patch("data_diff.dbt._local_diff")
668-
@patch("data_diff.dbt._cloud_diff")
669-
@patch("data_diff.dbt_parser.DbtParser.__new__")
670-
@patch("data_diff.dbt.rich.print")
671-
def test_diff_no_prod_configs(
672-
self, mock_print, mock_dbt_parser, mock_cloud_diff, mock_local_diff, mock_get_diff_vars
673-
):
674-
mock_dbt_parser_inst = Mock()
675-
mock_dbt_parser.return_value = mock_dbt_parser_inst
676-
mock_model = Mock()
677-
expected_dbt_vars_dict = {
678-
"datasource_id": 1,
679-
}
680-
681-
mock_dbt_parser_inst.get_models.return_value = [mock_model]
682-
mock_dbt_parser_inst.get_datadiff_variables.return_value = expected_dbt_vars_dict
683-
connection = None
684-
threads = None
685-
where = "a_string"
686-
expected_diff_vars = DiffVars(["dev"], ["prod"], ["pks"], connection, threads, where)
687-
mock_get_diff_vars.return_value = expected_diff_vars
688-
with self.assertRaises(ValueError):
689-
dbt_diff(is_cloud=False)
690-
691-
mock_dbt_parser_inst.get_models.assert_called_once()
692-
mock_dbt_parser_inst.set_connection.assert_called_once()
693-
mock_dbt_parser_inst.get_primary_keys.assert_not_called()
694-
mock_cloud_diff.assert_not_called()
695-
mock_local_diff.assert_not_called()
696-
mock_print.assert_not_called()
697-
698666
@patch("data_diff.dbt._get_diff_vars")
699667
@patch("data_diff.dbt._local_diff")
700668
@patch("data_diff.dbt._cloud_diff")
@@ -746,14 +714,12 @@ def test_diff_only_prod_schema(
746714
where = "a_string"
747715
expected_diff_vars = DiffVars(["dev"], ["prod"], ["pks"], connection, threads, where)
748716
mock_get_diff_vars.return_value = expected_diff_vars
749-
with self.assertRaises(ValueError):
750-
dbt_diff(is_cloud=False)
717+
dbt_diff(is_cloud=False)
751718

752719
mock_dbt_parser_inst.get_models.assert_called_once()
753720
mock_dbt_parser_inst.set_connection.assert_called_once()
754-
mock_dbt_parser_inst.get_primary_keys.assert_not_called()
755721
mock_cloud_diff.assert_not_called()
756-
mock_local_diff.assert_not_called()
722+
mock_local_diff.assert_called_once_with(expected_diff_vars)
757723
mock_print.assert_not_called()
758724

759725
@patch("data_diff.dbt._initialize_api")

0 commit comments

Comments
 (0)