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
@@ -1860,27 +1859,6 @@ def test_snapshot_triggers(init_and_plan_context: t.Callable, mocker: MockerFixt
18601859 context , plan = init_and_plan_context ("examples/sushi" )
18611860 context .apply (plan )
18621861
1863- # modify 3 models
1864- # - 2 breaking changes for testing plan directly modified triggers
1865- # - 1 adding an auto-restatement for subsequent `run` test
1866- marketing = context .get_model ("sushi.marketing" )
1867- marketing_kwargs = {
1868- ** marketing .dict (),
1869- "query" : d .parse_one (
1870- f"{ marketing .query .sql (dialect = 'duckdb' )} ORDER BY customer_id" , dialect = "duckdb"
1871- ),
1872- }
1873- context .upsert_model (SqlModel .parse_obj (marketing_kwargs ))
1874-
1875- customers = context .get_model ("sushi.customers" )
1876- customers_kwargs = {
1877- ** customers .dict (),
1878- "query" : d .parse_one (
1879- f"{ customers .query .sql (dialect = 'duckdb' )} ORDER BY customer_id" , dialect = "duckdb"
1880- ),
1881- }
1882- context .upsert_model (SqlModel .parse_obj (customers_kwargs ))
1883-
18841862 # add auto restatement to orders
18851863 orders = context .get_model ("sushi.orders" )
18861864 orders_kind = {
@@ -1893,67 +1871,8 @@ def test_snapshot_triggers(init_and_plan_context: t.Callable, mocker: MockerFixt
18931871 }
18941872 context .upsert_model (PythonModel .parse_obj (orders_kwargs ))
18951873
1896- spy = mocker .spy (sqlmesh .core .scheduler .Scheduler , "run_merged_intervals" )
1897-
18981874 context .plan (auto_apply = True , no_prompts = True , categorizer_config = CategorizerConfig .all_full ())
18991875
1900- # PLAN: directly modified triggers
1901- actual_triggers = spy .call_args .kwargs ["snapshot_evaluation_triggers" ]
1902- actual_triggers_name = {
1903- k .name : sorted ([s .name for s in v .directly_modified_triggers ])
1904- for k , v in actual_triggers .items ()
1905- if v .directly_modified_triggers
1906- }
1907- marketing_name = '"memory"."sushi"."marketing"'
1908- customers_name = '"memory"."sushi"."customers"'
1909- marketing_customers_names = sorted ([marketing_name , customers_name ])
1910- children_names = [
1911- f'"memory"."sushi"."{ model } "'
1912- for model in {
1913- "waiter_as_customer_by_day" ,
1914- "active_customers" ,
1915- "count_customers_active" ,
1916- "count_customers_inactive" ,
1917- }
1918- ]
1919- assert actual_triggers_name == {
1920- marketing_name : [marketing_name ],
1921- customers_name : [customers_name ],
1922- ** {k : marketing_customers_names for k in children_names },
1923- }
1924-
1925- # PLAN: restatement triggers
1926- spy .reset_mock ()
1927- context .plan (
1928- restate_models = [
1929- '"memory"."sushi"."marketing"' ,
1930- '"memory"."sushi"."order_items"' ,
1931- '"memory"."sushi"."waiter_revenue_by_day"' ,
1932- ],
1933- auto_apply = True ,
1934- no_prompts = True ,
1935- )
1936-
1937- order_items_name = '"memory"."sushi"."order_items"'
1938- waiter_revenue_by_day_name = '"memory"."sushi"."waiter_revenue_by_day"'
1939- actual_triggers = spy .call_args .kwargs ["snapshot_evaluation_triggers" ]
1940- actual_triggers_name = {
1941- k .name : sorted ([s .name for s in v .restatement_triggers ])
1942- for k , v in actual_triggers .items ()
1943- if v .restatement_triggers
1944- }
1945-
1946- assert sorted (actual_triggers_name [waiter_revenue_by_day_name ]) == sorted (
1947- [waiter_revenue_by_day_name , order_items_name ]
1948- )
1949- assert actual_triggers_name [order_items_name ] == [order_items_name ]
1950- assert actual_triggers_name ['"memory"."sushi"."top_waiters"' ] == [waiter_revenue_by_day_name ]
1951- assert actual_triggers_name ['"memory"."sushi"."customer_revenue_by_day"' ] == [order_items_name ]
1952- assert actual_triggers_name ['"memory"."sushi"."customer_revenue_lifetime"' ] == [
1953- order_items_name
1954- ]
1955-
1956- # RUN: select and auto-restatement triggers
19571876 # User selects top_waiters and waiter_revenue_by_day, others added as auto-upstream
19581877 selected_models = {"top_waiters" , "waiter_revenue_by_day" }
19591878 selected_models_auto_upstream = {"order_items" , "orders" , "items" }
0 commit comments