Skip to content

Commit 9f11746

Browse files
committed
Add support for model versions
1 parent b421500 commit 9f11746

14 files changed

+110
-22
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{% if dbt_unit_testing.version_bigger_or_equal_to("1.5") %}
2+
select * from {{ dbt_unit_testing.ref('model_with_version') }} where a > 0
3+
{% endif %}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{% if dbt_unit_testing.version_bigger_or_equal_to("1.5") %}
2+
select * from {{ dbt_unit_testing.ref('model_with_version', v=1) }} where a > 1
3+
{% endif %}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{% if dbt_unit_testing.version_bigger_or_equal_to("1.5") %}
2+
select * from {{ dbt_unit_testing.ref('model_with_version', version=2) }} where a > 2
3+
{% endif %}
4+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
select 1 as a
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
select 2 as a
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
version: 2
2+
3+
models:
4+
- name: model_with_version
5+
6+
versions:
7+
- v: 1
8+
- v: 2
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
{{
2+
config(
3+
tags=['unit-test', 'bigquery', 'snowflake', 'postgres', 'versioned', '1.5.4']
4+
)
5+
}}
6+
7+
{% call dbt_unit_testing.test('model_references_model_with_version', 'latest version') %}
8+
{% call dbt_unit_testing.mock_ref ('model_with_version') %}
9+
select 0 as a
10+
UNION ALL
11+
select 1234 as a
12+
{% endcall %}
13+
{% call dbt_unit_testing.expect() %}
14+
select 1234 as a
15+
{% endcall %}
16+
{% endcall %}
17+
18+
UNION ALL
19+
20+
{% call dbt_unit_testing.test('model_references_model_with_version_1', 'version 1') %}
21+
{% call dbt_unit_testing.mock_ref ('model_with_version', v=1) %}
22+
select 1 as a
23+
UNION ALL
24+
select 1234 as a
25+
{% endcall %}
26+
{% call dbt_unit_testing.expect() %}
27+
select 1234 as a
28+
{% endcall %}
29+
{% endcall %}
30+
31+
UNION ALL
32+
33+
{% call dbt_unit_testing.test('model_references_model_with_version_2', 'version 2') %}
34+
{% call dbt_unit_testing.mock_ref ('model_with_version', version=2) %}
35+
select 2 as a
36+
UNION ALL
37+
select 1234 as a
38+
{% endcall %}
39+
{% call dbt_unit_testing.expect() %}
40+
select 1234 as a
41+
{% endcall %}
42+
{% endcall %}
43+

macros/mock_builders.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,13 @@
1010
{% if model_name is undefined %}
1111
{{ dbt_unit_testing.raise_error('model_name must be provided for mock_ref') }}
1212
{% endif %}
13+
{% set node_version = kwargs["version"] | default(kwargs["v"]) | default(none) %}
1314
{% set mock = {
1415
"type": 'mock',
1516
"resource_type": 'model',
1617
"name": model_name,
1718
"package_name": project_or_package,
19+
"version": node_version,
1820
"options": options,
1921
"input_values": caller(),
2022
}

macros/overrides.sql

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
{% macro ref(project_or_package, model_name) %}
22
{% set project_or_package, model_name = dbt_unit_testing.setup_project_and_model_name(project_or_package, model_name) %}
33
{% if dbt_unit_testing.running_unit_test() %}
4-
{% set node = {"package_name": project_or_package, "name": model_name} %}
5-
{{ return (dbt_unit_testing.ref_cte_name(node)) }}
4+
{% set node_version = kwargs["version"] | default (kwargs["v"]) %}
5+
{% set node = {"package_name": project_or_package, "name": model_name, "version": node_version} %}
6+
{{ return (dbt_unit_testing.ref_cte_name(node)) }}
67
{% else %}
7-
{{ return (builtins.ref(project_or_package, model_name)) }}
8+
{{ return (builtins.ref(project_or_package, model_name, **kwargs)) }}
89
{% endif %}
910
{% endmacro %}
1011

macros/sql_builders.sql

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,15 @@
3737
{% endmacro %}
3838

3939
{% macro ref_cte_name(node) %}
40-
{% if node.project_or_package == model.package_name %}
41-
{{ return (dbt_unit_testing.quote_identifier(node.name)) }}
42-
{% else %}
43-
{{ return (dbt_unit_testing.quote_identifier([node.package_name, node.name] | join("__"))) }}
40+
{% set node = dbt_unit_testing.model_node(node) %}
41+
{% set parts = [node.name] %}
42+
{% if node.package_name != model.package_name %}
43+
{% set parts = [node.package_name] + parts %}
44+
{% endif %}
45+
{% if node.version is not none %}
46+
{% set parts = parts + [node.version] %}
4447
{% endif %}
48+
{{ return (dbt_unit_testing.quote_identifier(parts | join("__"))) }}
4549
{% endmacro %}
4650

4751
{% macro source_cte_name(node) %}

0 commit comments

Comments
 (0)