From fd0b959f577035cb4eab2aeada3afa69d9ea1bf9 Mon Sep 17 00:00:00 2001 From: Pedro Sousa Date: Wed, 17 Jan 2024 08:47:37 +0000 Subject: [PATCH] Fix issue with expect_no_rows --- macros/mock_builders.sql | 2 +- macros/sql_builders.sql | 2 +- macros/tests.sql | 15 +++++++++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/macros/mock_builders.sql b/macros/mock_builders.sql index fddffd8..0297511 100644 --- a/macros/mock_builders.sql +++ b/macros/mock_builders.sql @@ -58,7 +58,7 @@ {% set expectations = { "type": "expectations", "options": options, - "input_values": "select a from (select 1 as a) as s where false", + "no_rows": true, } %} {{ return (dbt_unit_testing.append_json(expectations)) }} diff --git a/macros/sql_builders.sql b/macros/sql_builders.sql index 56321ab..3c95943 100644 --- a/macros/sql_builders.sql +++ b/macros/sql_builders.sql @@ -91,7 +91,7 @@ {%- endif %} {% set name_parts = dbt_unit_testing.map([node.database, node.schema, name], dbt_unit_testing.quote_identifier) %} - select * from {{ name_parts | join('.') }} where false + select * from {{ name_parts | join('.') }} where 1 = 0 {%- else -%} {% if complete %} {{ dbt_unit_testing.build_model_complete_sql(node) }} diff --git a/macros/tests.sql b/macros/tests.sql index 4d54f38..3ab8167 100644 --- a/macros/tests.sql +++ b/macros/tests.sql @@ -14,10 +14,10 @@ {{ dbt_unit_testing.show_test_report(test_configuration, test_report) }} {% endif %} - select 1 as a from (select 1) as t where {{ not test_report.succeeded }} + select * from (select 1) as t where {{ not test_report.succeeded }} {{ dbt_unit_testing.clear_test_context() }} {% else %} - select 1 as a from (select 1) as t where false + select * from (select 1) as t where 1 = 0 {% endif %} {% endif %} {% endmacro %} @@ -85,8 +85,15 @@ {% set expectations = test_configuration.expectations %} {% set model_node = dbt_unit_testing.model_node(test_configuration.model_node) %} {%- set model_complete_sql = dbt_unit_testing.build_model_complete_sql(model_node, test_configuration.mocks, test_configuration.options) -%} + + {% if expectations.no_rows %} + {% set expectations_sql = "select * from (" ~ model_complete_sql ~ ") as t where 1 = 0" %} + {% else %} + {% set expectations_sql = expectations.input_values %} + {% endif %} + {% set column_transformations = test_configuration.options.column_transformations[test_configuration.model_name] | default({}) %} - {% set columns_list = dbt_unit_testing.extract_columns_list(expectations.input_values) %} + {% set columns_list = dbt_unit_testing.extract_columns_list(expectations_sql) %} {% set columns_list_str = dbt_unit_testing.quote_and_join_columns(columns_list) %} {% set transformed_columns_list_str = dbt_unit_testing.apply_transformations_to_columns(columns_list, column_transformations, use_alias=true) | join(", ") %} {% set transformed_columns_list_for_grouping_str = dbt_unit_testing.apply_transformations_to_columns(columns_list, column_transformations, use_alias=false) | join(", ") %} @@ -99,7 +106,7 @@ {% endset %} {%- set expectations_query -%} - select count(1) as {{ count_column }}, {{ transformed_columns_list_str }} from ({{ expectations.input_values }}) as s group by {{ transformed_columns_list_for_grouping_str }} + select count(1) as {{ count_column }}, {{ transformed_columns_list_str }} from ({{ expectations_sql }}) as s group by {{ transformed_columns_list_for_grouping_str }} {% endset %} {%- set test_query -%}