@@ -4570,6 +4570,36 @@ def test_multi_virtual_layer(mocker):
45704570 == " item_id global_one macro_one extra\n 0 gateway_2 88 1 c"
45714571 )
45724572
4573+ # Create dev environment
4574+ model = context .get_model ("db.local_schema.model_one" )
4575+ context .upsert_model (model .copy (update = {"query" : model .query .select ("'d' AS extra" )}))
4576+ plan = context .plan_builder ("dev" ).build ()
4577+ context .apply (plan )
4578+
4579+ dev_environment = context .state_sync .get_environment ("dev" )
4580+ assert dev_environment is not None
4581+ metadata = DuckDBMetadata .from_context (context )
4582+ start_schemas = set (metadata .schemas )
4583+ assert sorted (start_schemas ) == sorted (
4584+ {"local_schema" , "local_schema__dev" , "sqlmesh" , "sqlmesh__local_schema" }
4585+ )
4586+
4587+ # Invalidate dev environment
4588+ context .invalidate_environment ("dev" )
4589+ invalidate_environment = context .state_sync .get_environment ("dev" )
4590+ assert invalidate_environment is not None
4591+ schemas_prior_to_janitor = set (metadata .schemas )
4592+ assert invalidate_environment .expiration_ts < dev_environment .expiration_ts # type: ignore
4593+ assert sorted (start_schemas ) == sorted (schemas_prior_to_janitor )
4594+
4595+ # Run janitor
4596+ context ._run_janitor ()
4597+ removed_schemas = start_schemas - set (metadata .schemas )
4598+ assert context .state_sync .get_environment ("dev" ) is None
4599+ assert removed_schemas == {"local_schema__dev" }
4600+ prod_environment = context .state_sync .get_environment ("prod" )
4601+ assert len (prod_environment .snapshots_ ) == 4
4602+
45734603 # Changing the flag should show a diff
45744604 context .gateway_managed_virtual_layer = False
45754605 plan = context .plan_builder ().build ()
0 commit comments