@@ -697,3 +697,41 @@ def test_get_lineage_constants(project_context: Context) -> None:
697697 response_json = response .json ()
698698 assert response_json ['"foo"' ]["col" ]["models" ] == {'"bar"' : ["col" ]}
699699 assert response_json ['"bar"' ]["col" ]["models" ] == {'"external_table"' : ["col" ]}
700+
701+
702+ def test_get_lineage_quoted_columns (project_context : Context ) -> None :
703+ project_tmp_path = project_context .path
704+ models_dir = project_tmp_path / "models"
705+ models_dir .mkdir ()
706+ foo_sql_file = models_dir / "foo.sql"
707+ foo_sql_file .write_text (
708+ """MODEL (name foo);
709+ WITH my_cte AS (
710+ SELECT col as "@col" FROM bar
711+ UNION
712+ SELECT NULL::TIMESTAMP as "@col" FROM bar
713+ UNION
714+ SELECT 1 as "@col" FROM external_table
715+ )
716+ SELECT "@col" FROM my_cte;"""
717+ )
718+ bar_sql_file = models_dir / "bar.sql"
719+ bar_sql_file .write_text (
720+ """MODEL (name bar);
721+ SELECT col FROM external_table;"""
722+ )
723+ project_context .load ()
724+
725+ response = client .get ("/api/lineage/foo/@col" )
726+ assert response .status_code == 200 , response .json ()
727+ response_json = response .json ()
728+ assert response_json ['"foo"' ]["@col" ]["models" ] == {'"foo": my_cte' : ["@col" ]}
729+ assert response_json ['"foo": my_cte' ]["@col" ]["models" ] == {'"bar"' : ["col" ]}
730+ assert response_json ['"bar"' ]["col" ]["models" ] == {'"external_table"' : ["col" ]}
731+
732+ # Models only
733+ response = client .get ("/api/lineage/foo/@col?models_only=1" )
734+ assert response .status_code == 200 , response .json ()
735+ response_json = response .json ()
736+ assert response_json ['"foo"' ]["@col" ]["models" ] == {'"bar"' : ["col" ]}
737+ assert response_json ['"bar"' ]["col" ]["models" ] == {'"external_table"' : ["col" ]}
0 commit comments