From f04264ca4ccbbff028f2001ecf615e8113e07904 Mon Sep 17 00:00:00 2001 From: Mike Gouline <1960272+gouline@users.noreply.github.com> Date: Fri, 20 Dec 2024 19:59:54 +1100 Subject: [PATCH] test: native query exposure reference parsing --- tests/test_exposures.py | 66 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/tests/test_exposures.py b/tests/test_exposures.py index 51281edb..6cd941f4 100644 --- a/tests/test_exposures.py +++ b/tests/test_exposures.py @@ -65,3 +65,69 @@ def test_exposures_grouping_type(core: MockDbtMetabase): for file in (fixtures_path / "dashboard").iterdir(): _assert_exposures(file, output_path / "dashboard" / file.name) + + +@pytest.mark.parametrize( + ("query", "expected"), + [ + ( + "SELECT * FROM database.schema.table0", + {"database.schema.table0"}, + ), + ( + "SELECT * FROM schema.table0", + {"database.schema.table0"}, + ), + ( + "SELECT * FROM table1", + {"database.public.table1"}, + ), + ( + 'SELECT * FROM "schema".table0', + {"database.schema.table0"}, + ), + ( + 'SELECT * FROM schema."table0"', + {"database.schema.table0"}, + ), + ( + 'SELECT * FROM "schema"."table0"', + {"database.schema.table0"}, + ), + ( + "SELECT * FROM `schema.table0`", + {"database.schema.table0"}, + ), + ], +) +def test_extract_exposures_native_depends( + core: MockDbtMetabase, + query: str, + expected: set, +): + ctx = MockDbtMetabase._ExposuresMixin__Context( # type: ignore + model_refs={ + "database.schema.table0": "model0", + "database.public.table1": "model1", + }, + database_names={1: "database"}, + table_names={}, + ) + exposure = MockDbtMetabase._ExposuresMixin__Exposure( # type: ignore + model="card", + uid="", + label="", + ) + core._ExposuresMixin__exposure_card( # type: ignore + ctx=ctx, + exposure=exposure, + card={ + "dataset_query": { + "type": "native", + "database": 1, + "native": {"query": query}, + } + }, + ) + assert expected == exposure.depends + assert query == exposure.native_query