From a0fae4535ea011230046d7e9fe2ab32cf7626346 Mon Sep 17 00:00:00 2001 From: CleverThis Date: Wed, 15 Apr 2026 16:38:29 +0000 Subject: [PATCH] fix(test): add root_plan_id to raw SQL in plan_phase_migration constraint tests The step_try_insert_plan_with_phase_and_state function was using raw SQL to insert a plan with an invalid phase value to test the CHECK constraint. However, the raw SQL was missing the root_plan_id column, which is NOT NULL in the schema. This caused the insert to fail with a NOT NULL violation instead of the intended CHECK constraint violation on the phase column. This fix adds root_plan_id to the raw SQL INSERT statement, setting it to the same value as plan_id (for a root plan). This allows the test to properly exercise the CHECK constraint on the phase column, ensuring the test fails for the correct reason. ISSUES CLOSED: #9411 --- features/steps/plan_phase_migration_steps.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/features/steps/plan_phase_migration_steps.py b/features/steps/plan_phase_migration_steps.py index 9d1efa751..cff1c01ed 100644 --- a/features/steps/plan_phase_migration_steps.py +++ b/features/steps/plan_phase_migration_steps.py @@ -113,7 +113,11 @@ def step_insert_plan_with_phase_and_state(context: Any, phase: str, state: str) def step_try_insert_plan_with_phase_and_state( context: Any, phase: str, state: str ) -> None: - """Try to insert a plan with the specified phase and state, expecting failure.""" + """Try inserting a plan without ORM defaults to exercise the phase constraint. + + The direct SQL insert must provide both plan_id and root_plan_id so the + phase constraint is validated instead of failing on missing root_plan_id. + """ session: Session = context.phase_rebaseline_session ulid = _next_ulid() now = _now_iso() @@ -121,14 +125,15 @@ def step_try_insert_plan_with_phase_and_state( session.execute( text( "INSERT INTO v3_plans " - "(plan_id, action_name, namespaced_name, namespace, " + "(plan_id, root_plan_id, action_name, namespaced_name, namespace, " "phase, processing_state, description, tags_json, " "created_at, updated_at) " - "VALUES (:pid, :aname, :nname, :ns, :phase, :state, " + "VALUES (:pid, :rpid, :aname, :nname, :ns, :phase, :state, " ":desc, :tags, :cat, :uat)" ), { "pid": ulid, + "rpid": ulid, "aname": "local/phase-test-action", "nname": "local/try-plan", "ns": "local", -- 2.52.0