2626
2727
2828from sqlmesh import CustomMaterialization
29- import sqlmesh
3029from sqlmesh .cli .project_init import init_example_project
3130from sqlmesh .core import constants as c
3231from sqlmesh .core import dialect as d
@@ -1868,27 +1867,6 @@ def test_snapshot_triggers(init_and_plan_context: t.Callable, mocker: MockerFixt
18681867 context , plan = init_and_plan_context ("examples/sushi" )
18691868 context .apply (plan )
18701869
1871- # modify 3 models
1872- # - 2 breaking changes for testing plan directly modified triggers
1873- # - 1 adding an auto-restatement for subsequent `run` test
1874- marketing = context .get_model ("sushi.marketing" )
1875- marketing_kwargs = {
1876- ** marketing .dict (),
1877- "query" : d .parse_one (
1878- f"{ marketing .query .sql (dialect = 'duckdb' )} ORDER BY customer_id" , dialect = "duckdb"
1879- ),
1880- }
1881- context .upsert_model (SqlModel .parse_obj (marketing_kwargs ))
1882-
1883- customers = context .get_model ("sushi.customers" )
1884- customers_kwargs = {
1885- ** customers .dict (),
1886- "query" : d .parse_one (
1887- f"{ customers .query .sql (dialect = 'duckdb' )} ORDER BY customer_id" , dialect = "duckdb"
1888- ),
1889- }
1890- context .upsert_model (SqlModel .parse_obj (customers_kwargs ))
1891-
18921870 # add auto restatement to orders
18931871 orders = context .get_model ("sushi.orders" )
18941872 orders_kind = {
@@ -1901,67 +1879,8 @@ def test_snapshot_triggers(init_and_plan_context: t.Callable, mocker: MockerFixt
19011879 }
19021880 context .upsert_model (PythonModel .parse_obj (orders_kwargs ))
19031881
1904- spy = mocker .spy (sqlmesh .core .scheduler .Scheduler , "run_merged_intervals" )
1905-
19061882 context .plan (auto_apply = True , no_prompts = True , categorizer_config = CategorizerConfig .all_full ())
19071883
1908- # PLAN: directly modified triggers
1909- actual_triggers = spy .call_args .kwargs ["snapshot_evaluation_triggers" ]
1910- actual_triggers_name = {
1911- k .name : sorted ([s .name for s in v .directly_modified_triggers ])
1912- for k , v in actual_triggers .items ()
1913- if v .directly_modified_triggers
1914- }
1915- marketing_name = '"memory"."sushi"."marketing"'
1916- customers_name = '"memory"."sushi"."customers"'
1917- marketing_customers_names = sorted ([marketing_name , customers_name ])
1918- children_names = [
1919- f'"memory"."sushi"."{ model } "'
1920- for model in {
1921- "waiter_as_customer_by_day" ,
1922- "active_customers" ,
1923- "count_customers_active" ,
1924- "count_customers_inactive" ,
1925- }
1926- ]
1927- assert actual_triggers_name == {
1928- marketing_name : [marketing_name ],
1929- customers_name : [customers_name ],
1930- ** {k : marketing_customers_names for k in children_names },
1931- }
1932-
1933- # PLAN: restatement triggers
1934- spy .reset_mock ()
1935- context .plan (
1936- restate_models = [
1937- '"memory"."sushi"."marketing"' ,
1938- '"memory"."sushi"."order_items"' ,
1939- '"memory"."sushi"."waiter_revenue_by_day"' ,
1940- ],
1941- auto_apply = True ,
1942- no_prompts = True ,
1943- )
1944-
1945- order_items_name = '"memory"."sushi"."order_items"'
1946- waiter_revenue_by_day_name = '"memory"."sushi"."waiter_revenue_by_day"'
1947- actual_triggers = spy .call_args .kwargs ["snapshot_evaluation_triggers" ]
1948- actual_triggers_name = {
1949- k .name : sorted ([s .name for s in v .restatement_triggers ])
1950- for k , v in actual_triggers .items ()
1951- if v .restatement_triggers
1952- }
1953-
1954- assert sorted (actual_triggers_name [waiter_revenue_by_day_name ]) == sorted (
1955- [waiter_revenue_by_day_name , order_items_name ]
1956- )
1957- assert actual_triggers_name [order_items_name ] == [order_items_name ]
1958- assert actual_triggers_name ['"memory"."sushi"."top_waiters"' ] == [waiter_revenue_by_day_name ]
1959- assert actual_triggers_name ['"memory"."sushi"."customer_revenue_by_day"' ] == [order_items_name ]
1960- assert actual_triggers_name ['"memory"."sushi"."customer_revenue_lifetime"' ] == [
1961- order_items_name
1962- ]
1963-
1964- # RUN: select and auto-restatement triggers
19651884 # User selects top_waiters and waiter_revenue_by_day, others added as auto-upstream
19661885 selected_models = {"top_waiters" , "waiter_revenue_by_day" }
19671886 selected_models_auto_upstream = {"order_items" , "orders" , "items" }
0 commit comments