Skip to content

Commit 6a69f77

Browse files
authored
Chore: improve test coverage for unique key normalization (#1733)
1 parent 4472458 commit 6a69f77

File tree

1 file changed

+30
-14
lines changed

1 file changed

+30
-14
lines changed

tests/core/test_model.py

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1891,29 +1891,45 @@ def test_model_normalization():
18911891
assert model.clustered_by == ["A"]
18921892
assert model.depends_on == {"BLA"}
18931893

1894+
# Check possible variations of unique_key definitions
1895+
for key in ("""[a, COALESCE(b, ''), "c"]""", """(a, COALESCE(b, ''), "c")"""):
1896+
expr = d.parse(
1897+
f"""
1898+
MODEL (
1899+
name foo,
1900+
kind INCREMENTAL_BY_UNIQUE_KEY (
1901+
unique_key {key}
1902+
),
1903+
dialect snowflake
1904+
);
1905+
1906+
SELECT
1907+
x.a AS a,
1908+
x.b AS b,
1909+
x."c" AS c
1910+
FROM test.x AS x
1911+
"""
1912+
)
1913+
model = SqlModel.parse_raw(load_sql_based_model(expr).json())
1914+
assert model.unique_key == [
1915+
exp.column("A", quoted=False),
1916+
exp.func("COALESCE", exp.column("B", quoted=False), "''"),
1917+
exp.column("c", quoted=True),
1918+
]
1919+
18941920
expr = d.parse(
18951921
"""
18961922
MODEL (
18971923
name foo,
1898-
kind INCREMENTAL_BY_UNIQUE_KEY (
1899-
unique_key [a, COALESCE(b, ''), "c"]
1900-
),
1901-
dialect snowflake
1924+
dialect snowflake,
1925+
kind INCREMENTAL_BY_UNIQUE_KEY(unique_key a)
19021926
);
19031927
1904-
SELECT
1905-
x.a AS a,
1906-
x.b AS b,
1907-
x."c" AS c
1908-
FROM test.x AS x
1928+
SELECT x.a AS a FROM test.x AS x
19091929
"""
19101930
)
19111931
model = SqlModel.parse_raw(load_sql_based_model(expr).json())
1912-
assert model.unique_key == [
1913-
exp.column("A", quoted=False),
1914-
exp.func("COALESCE", exp.column("B", quoted=False), "''"),
1915-
exp.column("c", quoted=True),
1916-
]
1932+
assert model.unique_key == [exp.column("A", quoted=False)]
19171933

19181934

19191935
def test_incremental_unmanaged_validation():

0 commit comments

Comments
 (0)