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
@@ -1806,27 +1805,6 @@ def test_snapshot_triggers(init_and_plan_context: t.Callable, mocker: MockerFixt
18061805 context , plan = init_and_plan_context ("examples/sushi" )
18071806 context .apply (plan )
18081807
1809- # modify 3 models
1810- # - 2 breaking changes for testing plan directly modified triggers
1811- # - 1 adding an auto-restatement for subsequent `run` test
1812- marketing = context .get_model ("sushi.marketing" )
1813- marketing_kwargs = {
1814- ** marketing .dict (),
1815- "query" : d .parse_one (
1816- f"{ marketing .query .sql (dialect = 'duckdb' )} ORDER BY customer_id" , dialect = "duckdb"
1817- ),
1818- }
1819- context .upsert_model (SqlModel .parse_obj (marketing_kwargs ))
1820-
1821- customers = context .get_model ("sushi.customers" )
1822- customers_kwargs = {
1823- ** customers .dict (),
1824- "query" : d .parse_one (
1825- f"{ customers .query .sql (dialect = 'duckdb' )} ORDER BY customer_id" , dialect = "duckdb"
1826- ),
1827- }
1828- context .upsert_model (SqlModel .parse_obj (customers_kwargs ))
1829-
18301808 # add auto restatement to orders
18311809 orders = context .get_model ("sushi.orders" )
18321810 orders_kind = {
@@ -1839,67 +1817,8 @@ def test_snapshot_triggers(init_and_plan_context: t.Callable, mocker: MockerFixt
18391817 }
18401818 context .upsert_model (PythonModel .parse_obj (orders_kwargs ))
18411819
1842- spy = mocker .spy (sqlmesh .core .scheduler .Scheduler , "run_merged_intervals" )
1843-
18441820 context .plan (auto_apply = True , no_prompts = True , categorizer_config = CategorizerConfig .all_full ())
18451821
1846- # PLAN: directly modified triggers
1847- actual_triggers = spy .call_args .kwargs ["snapshot_evaluation_triggers" ]
1848- actual_triggers_name = {
1849- k .name : sorted ([s .name for s in v .directly_modified_triggers ])
1850- for k , v in actual_triggers .items ()
1851- if v .directly_modified_triggers
1852- }
1853- marketing_name = '"memory"."sushi"."marketing"'
1854- customers_name = '"memory"."sushi"."customers"'
1855- marketing_customers_names = sorted ([marketing_name , customers_name ])
1856- children_names = [
1857- f'"memory"."sushi"."{ model } "'
1858- for model in {
1859- "waiter_as_customer_by_day" ,
1860- "active_customers" ,
1861- "count_customers_active" ,
1862- "count_customers_inactive" ,
1863- }
1864- ]
1865- assert actual_triggers_name == {
1866- marketing_name : [marketing_name ],
1867- customers_name : [customers_name ],
1868- ** {k : marketing_customers_names for k in children_names },
1869- }
1870-
1871- # PLAN: restatement triggers
1872- spy .reset_mock ()
1873- context .plan (
1874- restate_models = [
1875- '"memory"."sushi"."marketing"' ,
1876- '"memory"."sushi"."order_items"' ,
1877- '"memory"."sushi"."waiter_revenue_by_day"' ,
1878- ],
1879- auto_apply = True ,
1880- no_prompts = True ,
1881- )
1882-
1883- order_items_name = '"memory"."sushi"."order_items"'
1884- waiter_revenue_by_day_name = '"memory"."sushi"."waiter_revenue_by_day"'
1885- actual_triggers = spy .call_args .kwargs ["snapshot_evaluation_triggers" ]
1886- actual_triggers_name = {
1887- k .name : sorted ([s .name for s in v .restatement_triggers ])
1888- for k , v in actual_triggers .items ()
1889- if v .restatement_triggers
1890- }
1891-
1892- assert sorted (actual_triggers_name [waiter_revenue_by_day_name ]) == sorted (
1893- [waiter_revenue_by_day_name , order_items_name ]
1894- )
1895- assert actual_triggers_name [order_items_name ] == [order_items_name ]
1896- assert actual_triggers_name ['"memory"."sushi"."top_waiters"' ] == [waiter_revenue_by_day_name ]
1897- assert actual_triggers_name ['"memory"."sushi"."customer_revenue_by_day"' ] == [order_items_name ]
1898- assert actual_triggers_name ['"memory"."sushi"."customer_revenue_lifetime"' ] == [
1899- order_items_name
1900- ]
1901-
1902- # RUN: select and auto-restatement triggers
19031822 # User selects top_waiters and waiter_revenue_by_day, others added as auto-upstream
19041823 selected_models = {"top_waiters" , "waiter_revenue_by_day" }
19051824 selected_models_auto_upstream = {"order_items" , "orders" , "items" }
0 commit comments