@@ -716,6 +716,8 @@ def test_macro(**kwargs) -> None:
716716
717717
718718def test_model_pre_post_statements ():
719+ macro .registry ().pop ("foo" , None )
720+
719721 @macro ()
720722 def foo (** kwargs ) -> None :
721723 pass
@@ -776,6 +778,46 @@ def multiple_statements(evaluator, t1_value=exp.Literal.number(1)):
776778 assert "exp" in model .python_env
777779
778780
781+ @pytest .mark .parametrize ("model_kind" , ["FULL" , "VIEW" ])
782+ def test_model_pre_post_statements_start_end_are_always_available (model_kind : str ):
783+ macro .registry ().pop ("foo" , None )
784+ macro .registry ().pop ("bar" , None )
785+
786+ @macro ()
787+ def foo (evaluator : MacroEvaluator , start : str , end : str ) -> str :
788+ return f"'{ start } , { end } '"
789+
790+ @macro ()
791+ def bar (evaluator : MacroEvaluator , start : int , end : int ) -> str :
792+ return f"'{ start } , { end } '"
793+
794+ expressions = d .parse (
795+ f"""
796+ MODEL (
797+ name db.table,
798+ kind { model_kind } ,
799+ );
800+
801+ @foo(@start_ds, @end_ds);
802+
803+ SELECT 1 AS x;
804+
805+ @bar(@start_millis, @end_millis);
806+ """
807+ )
808+ model = load_sql_based_model (expressions )
809+
810+ start = "2025-01-01"
811+ end = "2025-01-02"
812+
813+ assert model .render_pre_statements (start = start , end = end ) == [
814+ exp .Literal .string (f"{ start } , { end } " )
815+ ]
816+ assert model .render_post_statements (start = start , end = end ) == [
817+ exp .Literal .string (f"{ to_timestamp (start )} , { to_timestamp ('2025-01-03' ) - 1 } " )
818+ ]
819+
820+
779821def test_seed_hydration ():
780822 expressions = d .parse (
781823 """
@@ -1030,6 +1072,8 @@ def test_seed_marker_substitution():
10301072
10311073
10321074def test_seed_pre_post_statements ():
1075+ macro .registry ().pop ("bar" , None )
1076+
10331077 @macro ()
10341078 def bar (** kwargs ) -> None :
10351079 pass
0 commit comments