Skip to content

Commit fc19dbe

Browse files
authored
More unit tests, more cleanup (#978)
1 parent f2ade58 commit fc19dbe

File tree

21 files changed

+467
-222
lines changed

21 files changed

+467
-222
lines changed

dbt/include/databricks/macros/adapters/python.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,5 +145,5 @@ writer = (
145145
{%- endif -%}
146146
)
147147

148-
writer.saveAsTable("{{ relation }}")
148+
writer.saveAsTable("{{ relation.render() }}")
149149
{% endmacro %}

dbt/include/databricks/macros/materializations/incremental/strategies.sql

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,18 @@
3737
{% endmacro %}
3838

3939
{% macro get_replace_where_sql(args_dict) -%}
40-
{%- set predicates = args_dict['incremental_predicates'] -%}
41-
{%- set target_relation = args_dict['target_relation'] -%}
42-
{%- set temp_relation = args_dict['temp_relation'] -%}
43-
44-
insert into {{ target_relation }}
45-
{% if predicates %}
46-
{% if predicates is sequence and predicates is not string %}
47-
replace where {{ predicates | join(' and ') }}
48-
{% else %}
49-
replace where {{ predicates }}
50-
{% endif %}
51-
{% endif %}
52-
table {{ temp_relation }}
53-
40+
{%- set predicates = args_dict['incremental_predicates'] -%}
41+
{%- set target_relation = args_dict['target_relation'] -%}
42+
{%- set temp_relation = args_dict['temp_relation'] -%}
43+
INSERT INTO {{ target_relation.render() }}
44+
{% if predicates %}
45+
{% if predicates is sequence and predicates is not string %}
46+
REPLACE WHERE {{ predicates | join(' and ') }}
47+
{% else %}
48+
REPLACE WHERE {{ predicates }}
49+
{% endif %}
50+
{% endif %}
51+
TABLE {{ temp_relation.render() }}
5452
{% endmacro %}
5553

5654
{% macro get_insert_into_sql(source_relation, target_relation) %}

dbt/include/databricks/macros/relations/constraints.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
{% macro apply_alter_constraints(relation) %}
2929
{%- for constraint in relation.alter_constraints -%}
3030
{% call statement('add constraint') %}
31-
ALTER TABLE {{ relation }} ADD {{ constraint.render() }}
31+
ALTER TABLE {{ relation.render() }} ADD {{ constraint.render() }}
3232
{% endcall %}
3333
{%- endfor -%}
3434
{% endmacro %}
@@ -131,7 +131,7 @@
131131
{{ exceptions.raise_compiler_error("Constraint of type " ~ type ~ " with no `name` provided, and no md5 utility.") }}
132132
{% endif %}
133133
{% endif %}
134-
{% set stmt = "alter table " ~ relation ~ " add constraint " ~ name ~ " check (" ~ expression ~ ");" %}
134+
{% set stmt = "alter table " ~ relation.render() ~ " add constraint " ~ name ~ " check (" ~ expression ~ ");" %}
135135
{% do statements.append(stmt) %}
136136
{% elif type == 'not_null' %}
137137
{% set column_names = constraint.get('columns', []) %}

dbt/include/databricks/macros/relations/materialized_view/create.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
{%- set tblproperties = materialized_view.config["tblproperties"].tblproperties -%}
55
{%- set comment = materialized_view.config["comment"].comment -%}
66
{%- set refresh = materialized_view.config["refresh"] -%}
7-
create materialized view {{ relation }}
7+
create materialized view {{ relation.render() }}
88
{{ get_create_sql_partition_by(partition_by) }}
99
{{ get_create_sql_comment(comment) }}
1010
{{ get_create_sql_tblproperties(tblproperties) }}

dbt/include/databricks/macros/relations/optimize.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
{%- endmacro -%}
1616

1717
{%- macro get_optimize_sql(relation) %}
18-
optimize {{ relation }}
18+
optimize {{ relation.render() }}
1919
{%- if config.get('zorder', False) and config.get('file_format', 'delta') == 'delta' %}
2020
{%- if config.get('liquid_clustered_by', False) or config.get('auto_liquid_cluster', False) %}
2121
{{ exceptions.warn("Both zorder and liquid_clustering are set but they are incompatible. zorder will be ignored.") }}

dbt/include/databricks/macros/relations/streaming_table/alter.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
{%- set partition_by = configuration_changes.changes["partition_by"].partition_by -%}
4949
{%- set tblproperties = configuration_changes.changes["tblproperties"].tblproperties -%}
5050
{%- set comment = configuration_changes.changes["comment"].comment -%}
51-
CREATE OR REFRESH STREAMING TABLE {{ relation }}
51+
CREATE OR REFRESH STREAMING TABLE {{ relation.render() }}
5252
{% if partition_by -%}
5353
{{ get_create_sql_partition_by(partition_by) }}
5454
{%- endif %}
@@ -64,7 +64,7 @@
6464
{% macro get_alter_st_internal(relation, configuration_changes) %}
6565
{%- set refresh = configuration_changes.changes["refresh"] -%}
6666
{%- if refresh and refresh.cron -%}
67-
ALTER STREAMING TABLE {{ relation }}
67+
ALTER STREAMING TABLE {{ relation.render() }}
6868
{{ get_alter_sql_refresh_schedule(refresh.cron, refresh.time_zone_value, False) -}}
6969
{%- endif -%}
7070
{% endmacro %}

dbt/include/databricks/macros/relations/streaming_table/create.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
{%- set comment = streaming_table.config["comment"].comment -%}
1010
{%- set refresh = streaming_table.config["refresh"] -%}
1111

12-
CREATE STREAMING TABLE {{ relation }}
12+
CREATE STREAMING TABLE {{ relation.render() }}
1313
{{ get_create_sql_partition_by(partition_by) }}
1414
{{ get_create_sql_comment(comment) }}
1515
{{ get_create_sql_tblproperties(tblproperties) }}

dbt/include/databricks/macros/relations/table/create.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
{%- endif -%}
2828

2929
{%- if file_format == 'delta' %}
30-
create or replace table {{ target_relation }}
30+
create or replace table {{ target_relation.render() }}
3131
{% else %}
32-
create table {{ target_relation }}
32+
create table {{ target_relation.render() }}
3333
{% endif -%}
3434
{{ get_column_and_constraints_sql(target_relation, columns) }}
3535
{{ file_format_clause() }}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{% macro databricks__get_rename_table_sql(relation, new_name) %}
2-
ALTER TABLE {{ relation }} RENAME TO `{{ new_name }}`
2+
ALTER TABLE {{ relation.render() }} RENAME TO `{{ new_name }}`
33
{% endmacro %}

tests/unit/macros/adapters/test_catalog_macros.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def test_get_catalog_tables_sql(self, template_bundle):
3838
from `system`.`information_schema`.`tables`
3939
"""
4040

41-
assert result == self.clean_sql(expected)
41+
self.assert_sql_equal(result, expected)
4242

4343
def test_get_catalog_columns_sql(self, template_bundle):
4444
"""Test the SQL generation for catalog columns query"""
@@ -60,7 +60,7 @@ def test_get_catalog_columns_sql(self, template_bundle):
6060
from `system`.`information_schema`.`columns`
6161
"""
6262

63-
assert result == self.clean_sql(expected)
63+
self.assert_sql_equal(result, expected)
6464

6565
def test_get_catalog_results_sql(self, template_bundle):
6666
"""Test the SQL generation for joining tables and columns"""
@@ -73,7 +73,7 @@ def test_get_catalog_results_sql(self, template_bundle):
7373
order by column_index
7474
"""
7575

76-
assert result == self.clean_sql(expected)
76+
self.assert_sql_equal(result, expected)
7777

7878
def test_get_catalog_schemas_where_clause_sql(self, template_bundle):
7979
"""Test the SQL generation for schemas where clause"""
@@ -95,7 +95,7 @@ def test_get_catalog_schemas_where_clause_sql(self, template_bundle):
9595
)
9696
"""
9797

98-
assert result == self.clean_sql(expected)
98+
self.assert_sql_equal(result, expected)
9999

100100
def test_get_catalog_relations_where_clause_sql(self, template_bundle):
101101
"""Test the SQL generation for relations where clause"""
@@ -126,7 +126,7 @@ def test_get_catalog_relations_where_clause_sql(self, template_bundle):
126126
)
127127
"""
128128

129-
assert result == self.clean_sql(expected)
129+
self.assert_sql_equal(result, expected)
130130

131131
def test_get_catalog(self, template_bundle, context):
132132
"""Test the full get_catalog macro with mocked run_query"""
@@ -191,7 +191,7 @@ def test_get_catalog(self, template_bundle, context):
191191
order by column_index
192192
"""
193193

194-
assert self.clean_sql(sql_query) == self.clean_sql(expected_sql)
194+
self.assert_sql_equal(sql_query, expected_sql)
195195

196196
def test_get_catalog_relations(self, template_bundle, context):
197197
"""Test the get_catalog_relations macro with mocked run_query"""
@@ -265,4 +265,4 @@ def test_get_catalog_relations(self, template_bundle, context):
265265
order by column_index
266266
"""
267267

268-
assert self.clean_sql(sql_query) == self.clean_sql(expected_sql)
268+
self.assert_sql_equal(sql_query, expected_sql)

tests/unit/macros/adapters/test_columns_macros.py

Lines changed: 25 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -14,33 +14,23 @@ def template_name(self) -> str:
1414
def macro_folders_to_load(self) -> list:
1515
return ["macros", "macros/adapters"]
1616

17-
@pytest.fixture
18-
def mock_relation(self):
19-
relation = Mock()
20-
relation.database = "test_db"
21-
relation.schema = "test_schema"
22-
relation.identifier = "test_table"
23-
relation.render = Mock(return_value="`test_db`.`test_schema`.`test_table`")
24-
relation.is_delta = True
25-
return relation
17+
def test_get_columns_comments_sql(self, template_bundle, relation):
18+
result = self.run_macro(template_bundle.template, "get_columns_comments_sql", relation)
2619

27-
def test_get_columns_comments_sql(self, template_bundle, mock_relation):
28-
result = self.run_macro(template_bundle.template, "get_columns_comments_sql", mock_relation)
20+
expected_sql = "DESCRIBE TABLE `some_database`.`some_schema`.`some_table`"
21+
self.assert_sql_equal(result, expected_sql)
2922

30-
expected_sql = "DESCRIBE TABLE `test_db`.`test_schema`.`test_table`"
31-
assert result == self.clean_sql(expected_sql)
23+
def test_repair_table_sql(self, template_bundle, relation):
24+
result = self.run_macro(template_bundle.template, "repair_table_sql", relation)
3225

33-
def test_repair_table_sql(self, template_bundle, mock_relation):
34-
result = self.run_macro(template_bundle.template, "repair_table_sql", mock_relation)
26+
expected_sql = "REPAIR TABLE `some_database`.`some_schema`.`some_table` SYNC METADATA"
27+
self.assert_sql_equal(result, expected_sql)
3528

36-
expected_sql = "REPAIR TABLE `test_db`.`test_schema`.`test_table` SYNC METADATA"
37-
assert result == self.clean_sql(expected_sql)
38-
39-
def test_get_columns_comments_via_information_schema_sql(self, template_bundle, mock_relation):
29+
def test_get_columns_comments_via_information_schema_sql(self, template_bundle, relation):
4030
result = self.run_macro(
4131
template_bundle.template,
4232
"get_columns_comments_via_information_schema_sql",
43-
mock_relation,
33+
relation,
4434
)
4535

4636
# Note the lowercase in the WHERE clause due to |lower filters
@@ -51,14 +41,14 @@ def test_get_columns_comments_via_information_schema_sql(self, template_bundle,
5141
comment
5242
FROM `system`.`information_schema`.`columns`
5343
WHERE
54-
table_catalog = 'test_db' and
55-
table_schema = 'test_schema' and
56-
table_name = 'test_table'
44+
table_catalog = 'some_database' and
45+
table_schema = 'some_schema' and
46+
table_name = 'some_table'
5747
"""
5848

59-
assert result == self.clean_sql(expected_sql)
49+
self.assert_sql_equal(result, expected_sql)
6050

61-
def test_drop_columns_sql(self, template_bundle, context, mock_relation):
51+
def test_drop_columns_sql(self, template_bundle, context, relation):
6252
"""Test drop_columns_sql macro"""
6353
# Mock Column.format_remove_column_list
6454
context["api"] = MagicMock()
@@ -67,25 +57,26 @@ def test_drop_columns_sql(self, template_bundle, context, mock_relation):
6757
remove_columns = ["col1", "col2"]
6858

6959
result = self.run_macro(
70-
template_bundle.template, "drop_columns_sql", mock_relation, remove_columns
60+
template_bundle.template, "drop_columns_sql", relation, remove_columns
7161
)
7262

73-
expected_sql = "ALTER TABLE `test_db`.`test_schema`.`test_table` DROP COLUMNS (col1, col2)"
74-
assert self.clean_sql(result) == self.clean_sql(expected_sql)
63+
expected_sql = (
64+
"ALTER TABLE `some_database`.`some_schema`.`some_table` DROP COLUMNS (col1, col2)"
65+
)
66+
self.assert_sql_equal(result, expected_sql)
7567

76-
def test_add_columns_sql(self, template_bundle, context, mock_relation):
68+
def test_add_columns_sql(self, template_bundle, context, relation):
7769
"""Test add_columns_sql macro"""
7870
# Mock Column.format_add_column_list
7971
context["api"] = MagicMock()
8072
context["api"].Column.format_add_column_list = Mock(return_value="col1 INT, col2 STRING")
8173

8274
add_columns = ["col1", "col2"]
8375

84-
result = self.run_macro(
85-
template_bundle.template, "add_columns_sql", mock_relation, add_columns
86-
)
76+
result = self.run_macro(template_bundle.template, "add_columns_sql", relation, add_columns)
8777

8878
expected_sql = (
89-
"ALTER TABLE `test_db`.`test_schema`.`test_table` ADD COLUMNS (col1 INT, col2 STRING)"
79+
"ALTER TABLE `some_database`.`some_schema`.`some_table` "
80+
"ADD COLUMNS (col1 INT, col2 STRING)"
9081
)
91-
assert self.clean_sql(result) == self.clean_sql(expected_sql)
82+
self.assert_sql_equal(result, expected_sql)

0 commit comments

Comments
 (0)