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

Commit 023450a

Browse files
committed
add support for two part id
1 parent cfd941f commit 023450a

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
@@ -101,11 +101,6 @@ def dbt_diff(
101101
else:
102102
dbt_parser.set_connection()
103103

104-
if config_prod_database is None:
105-
raise ValueError(
106-
"Expected a value for prod_database: OR prod_database: AND prod_schema: under \nvars:\n data_diff: "
107-
)
108-
109104
for model in models:
110105
diff_vars = _get_diff_vars(
111106
dbt_parser, config_prod_database, config_prod_schema, config_prod_custom_schema, model
@@ -162,12 +157,12 @@ def _get_diff_vars(
162157
prod_schema = dev_schema
163158

164159
if dbt_parser.requires_upper:
165-
dev_qualified_list = [x.upper() for x in [dev_database, dev_schema, model.alias]]
166-
prod_qualified_list = [x.upper() for x in [prod_database, prod_schema, model.alias]]
160+
dev_qualified_list = [x.upper() for x in [dev_database, dev_schema, model.alias] if x]
161+
prod_qualified_list = [x.upper() for x in [prod_database, prod_schema, model.alias] if x]
167162
primary_keys = [x.upper() for x in primary_keys]
168163
else:
169-
dev_qualified_list = [dev_database, dev_schema, model.alias]
170-
prod_qualified_list = [prod_database, prod_schema, model.alias]
164+
dev_qualified_list = list(filter(None, [dev_database, dev_schema, model.alias]))
165+
prod_qualified_list = list(filter(None, [prod_database, prod_schema, model.alias]))
171166

172167
where_filter = None
173168
if model.meta:
@@ -286,7 +281,7 @@ def _cloud_diff(diff_vars: DiffVars, datasource_id: int, api: DatafoldAPI) -> No
286281
try:
287282
diff_id = api.create_data_diff(payload=payload)
288283
diff_url = f"{api.host}/datadiffs/{diff_id}/overview"
289-
rich.print(f"{diff_vars.dev_path[2]}: {diff_url}")
284+
rich.print(f"{diff_vars.dev_path[-1]}: {diff_url}")
290285

291286
if diff_id is None:
292287
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
@@ -613,38 +613,6 @@ def test_diff_is_not_cloud(self, mock_print, mock_dbt_parser, mock_cloud_diff, m
613613
mock_local_diff.assert_called_once_with(expected_diff_vars)
614614
mock_print.assert_not_called()
615615

616-
@patch("data_diff.dbt._get_diff_vars")
617-
@patch("data_diff.dbt._local_diff")
618-
@patch("data_diff.dbt._cloud_diff")
619-
@patch("data_diff.dbt_parser.DbtParser.__new__")
620-
@patch("data_diff.dbt.rich.print")
621-
def test_diff_no_prod_configs(
622-
self, mock_print, mock_dbt_parser, mock_cloud_diff, mock_local_diff, mock_get_diff_vars
623-
):
624-
mock_dbt_parser_inst = Mock()
625-
mock_dbt_parser.return_value = mock_dbt_parser_inst
626-
mock_model = Mock()
627-
expected_dbt_vars_dict = {
628-
"datasource_id": 1,
629-
}
630-
631-
mock_dbt_parser_inst.get_models.return_value = [mock_model]
632-
mock_dbt_parser_inst.get_datadiff_variables.return_value = expected_dbt_vars_dict
633-
connection = None
634-
threads = None
635-
where = "a_string"
636-
expected_diff_vars = DiffVars(["dev"], ["prod"], ["pks"], connection, threads, where)
637-
mock_get_diff_vars.return_value = expected_diff_vars
638-
with self.assertRaises(ValueError):
639-
dbt_diff(is_cloud=False)
640-
641-
mock_dbt_parser_inst.get_models.assert_called_once()
642-
mock_dbt_parser_inst.set_connection.assert_called_once()
643-
mock_dbt_parser_inst.get_primary_keys.assert_not_called()
644-
mock_cloud_diff.assert_not_called()
645-
mock_local_diff.assert_not_called()
646-
mock_print.assert_not_called()
647-
648616
@patch("data_diff.dbt._get_diff_vars")
649617
@patch("data_diff.dbt._local_diff")
650618
@patch("data_diff.dbt._cloud_diff")
@@ -696,14 +664,12 @@ def test_diff_only_prod_schema(
696664
where = "a_string"
697665
expected_diff_vars = DiffVars(["dev"], ["prod"], ["pks"], connection, threads, where)
698666
mock_get_diff_vars.return_value = expected_diff_vars
699-
with self.assertRaises(ValueError):
700-
dbt_diff(is_cloud=False)
667+
dbt_diff(is_cloud=False)
701668

702669
mock_dbt_parser_inst.get_models.assert_called_once()
703670
mock_dbt_parser_inst.set_connection.assert_called_once()
704-
mock_dbt_parser_inst.get_primary_keys.assert_not_called()
705671
mock_cloud_diff.assert_not_called()
706-
mock_local_diff.assert_not_called()
672+
mock_local_diff.assert_called_once_with(expected_diff_vars)
707673
mock_print.assert_not_called()
708674

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

0 commit comments

Comments
 (0)