|
| 1 | +import pytest |
| 2 | + |
| 3 | +from dbt.tests.util import run_dbt |
| 4 | + |
| 5 | +model_1 = """ |
| 6 | +select 1 as id, 'joe' as first_name |
| 7 | +""" |
| 8 | + |
| 9 | +model_versioned = """ |
| 10 | +select 1 as id, 'joe' as first_name |
| 11 | +""" |
| 12 | + |
| 13 | +docs_md = """ |
| 14 | +{% docs model_description %} |
| 15 | +unversioned model |
| 16 | +{% enddocs %} |
| 17 | +
|
| 18 | +{% docs column_id_doc %} |
| 19 | +column id for some thing |
| 20 | +{% enddocs %} |
| 21 | +
|
| 22 | +{% docs versioned_model_description %} |
| 23 | +versioned model |
| 24 | +{% enddocs %} |
| 25 | +
|
| 26 | +""" |
| 27 | + |
| 28 | +schema_yml = """ |
| 29 | +models: |
| 30 | + - name: model_1 |
| 31 | + description: '{{ doc("model_description") }}' |
| 32 | + columns: |
| 33 | + - name: id |
| 34 | + description: '{{ doc("column_id_doc") }}' |
| 35 | +
|
| 36 | + - name: model_versioned |
| 37 | + description: '{{ doc("versioned_model_description") }}' |
| 38 | + latest_version: 1 |
| 39 | + versions: |
| 40 | + - v: 1 |
| 41 | + config: |
| 42 | + alias: my_alias |
| 43 | + columns: |
| 44 | + - name: id |
| 45 | + description: '{{ doc("column_id_doc") }}' |
| 46 | + - name: first_name |
| 47 | + description: 'plain text' |
| 48 | + - v: 2 |
| 49 | + columns: |
| 50 | + - name: other_id |
| 51 | +""" |
| 52 | + |
| 53 | + |
| 54 | +class TestVersionedModelDocsBlock: |
| 55 | + @pytest.fixture(scope="class") |
| 56 | + def models(self): |
| 57 | + return { |
| 58 | + "model_1.sql": model_1, |
| 59 | + "model_versioned.sql": model_versioned, |
| 60 | + "schema.yml": schema_yml, |
| 61 | + "docs.md": docs_md, |
| 62 | + } |
| 63 | + |
| 64 | + def test_versioned_doc_ref(self, project): |
| 65 | + manifest = run_dbt(["parse"]) |
| 66 | + model_1 = manifest.nodes["model.test.model_1"] |
| 67 | + model_v1 = manifest.nodes["model.test.model_versioned.v1"] |
| 68 | + |
| 69 | + assert model_1.description == "unversioned model" |
| 70 | + assert model_v1.description == "versioned model" |
| 71 | + |
| 72 | + assert model_1.columns["id"].description == "column id for some thing" |
| 73 | + assert model_v1.columns["id"].description == "column id for some thing" |
| 74 | + assert model_v1.columns["first_name"].description == "plain text" |
0 commit comments