@@ -2310,3 +2310,60 @@ def test_metadata_change(make_snapshot, mocker: MockerFixture):
23102310 plan .snapshots [updated_snapshot .snapshot_id ].change_category
23112311 == SnapshotChangeCategory .METADATA
23122312 )
2313+
2314+
2315+ def test_plan_start_when_preview_enabled (make_snapshot , mocker : MockerFixture ):
2316+ model_start = "2024-01-01"
2317+ model = SqlModel (
2318+ name = "a" ,
2319+ query = parse_one ("select 1, ds" ),
2320+ dialect = "duckdb" ,
2321+ kind = dict (
2322+ name = ModelKindName .INCREMENTAL_BY_TIME_RANGE , time_column = "ds" , forward_only = True
2323+ ),
2324+ start = model_start ,
2325+ )
2326+
2327+ snapshot = make_snapshot (model )
2328+ context_diff = ContextDiff (
2329+ environment = "test_environment" ,
2330+ is_new_environment = True ,
2331+ is_unfinalized_environment = False ,
2332+ create_from = "prod" ,
2333+ added = {snapshot .snapshot_id },
2334+ removed_snapshots = {},
2335+ modified_snapshots = {},
2336+ snapshots = {
2337+ snapshot .snapshot_id : snapshot ,
2338+ },
2339+ new_snapshots = {snapshot .snapshot_id : snapshot },
2340+ previous_plan_id = None ,
2341+ previously_promoted_snapshot_ids = set (),
2342+ previous_finalized_snapshots = None ,
2343+ )
2344+
2345+ default_start_for_preview = "2024-06-09"
2346+
2347+ # When a model is added SQLMesh should not consider the backfill to be a preview.
2348+ plan_builder = PlanBuilder (
2349+ context_diff ,
2350+ DuckDBEngineAdapter .SCHEMA_DIFFER ,
2351+ default_start = default_start_for_preview ,
2352+ is_dev = True ,
2353+ enable_preview = True ,
2354+ )
2355+ assert plan_builder .build ().start == to_timestamp (model_start )
2356+
2357+ # When a model is modified then the backfill should be a preview.
2358+ snapshot = make_snapshot (model )
2359+ context_diff .added = set ()
2360+ context_diff .modified_snapshots = {snapshot .name : (snapshot , snapshot )}
2361+
2362+ plan_builder = PlanBuilder (
2363+ context_diff ,
2364+ DuckDBEngineAdapter .SCHEMA_DIFFER ,
2365+ default_start = default_start_for_preview ,
2366+ is_dev = True ,
2367+ enable_preview = True ,
2368+ )
2369+ assert plan_builder .build ().start == default_start_for_preview
0 commit comments