From 10a9b005ff388bed6ab4509126537535d46898bc Mon Sep 17 00:00:00 2001 From: Axell <68310020+axellpadilla@users.noreply.github.com> Date: Tue, 30 Sep 2025 01:33:12 +0000 Subject: [PATCH] feat: add get_expected_sql macro to support expected SQL generation in unit tests --- .../unit_test/unit_test_table.sql | 3 +-- .../macros/unit_test_sql/get_fixture_sql.sql | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 dbt/include/sqlserver/macros/unit_test_sql/get_fixture_sql.sql diff --git a/dbt/include/sqlserver/macros/materializations/unit_test/unit_test_table.sql b/dbt/include/sqlserver/macros/materializations/unit_test/unit_test_table.sql index 7c21db160..424bd4322 100644 --- a/dbt/include/sqlserver/macros/materializations/unit_test/unit_test_table.sql +++ b/dbt/include/sqlserver/macros/materializations/unit_test/unit_test_table.sql @@ -23,8 +23,7 @@ {%- endfor -%} {% if not expected_sql %} - {% set expected_sql = get_expected_sql(expected_rows, column_name_to_data_types) %} - {# column_name_to_quoted can be added once supported by get_expected_sql #} + {% set expected_sql = get_expected_sql(expected_rows, column_name_to_data_types, column_name_to_quoted) %} {% endif %} {% set unit_test_sql = get_unit_test_sql(sql, expected_sql, expected_column_names_quoted) %} diff --git a/dbt/include/sqlserver/macros/unit_test_sql/get_fixture_sql.sql b/dbt/include/sqlserver/macros/unit_test_sql/get_fixture_sql.sql new file mode 100644 index 000000000..17e6e7915 --- /dev/null +++ b/dbt/include/sqlserver/macros/unit_test_sql/get_fixture_sql.sql @@ -0,0 +1,17 @@ +{% macro get_expected_sql(rows, column_name_to_data_types, column_name_to_quoted) %} + +{%- if (rows | length) == 0 -%} + select top 0 * from dbt_internal_unit_test_actual where 1=0 +{%- else -%} +{%- for row in rows -%} +{%- set formatted_row = format_row(row, column_name_to_data_types) -%} +select +{%- for column_name, column_value in formatted_row.items() %} {{ column_value }} as {{ column_name_to_quoted[column_name] }}{% if not loop.last -%}, {%- endif %} +{%- endfor %} +{%- if not loop.last %} +union all +{% endif %} +{%- endfor -%} +{%- endif -%} + +{% endmacro %}