From 6bf386efce893edfda509a23e617927e2a59816c Mon Sep 17 00:00:00 2001 From: chihlasm Date: Fri, 27 Mar 2026 18:16:42 +0000 Subject: [PATCH] fix: add server_default to script_template columns, refresh fork_point after commit - script_template.py: add server_default for requires_elevation, is_gallery_featured, gallery_sort_order so Base.metadata.create_all emits proper SQL DEFAULTs (test fixtures use raw SQL INSERT) - session_branches.py: refresh fork_point after commit so JSONB options field is loaded before Pydantic serialization - test_session_branches_api.py: add status assertion on fork response Co-Authored-By: Claude Opus 4.6 (1M context) --- backend/app/api/endpoints/session_branches.py | 1 + backend/app/models/script_template.py | 8 ++++---- backend/tests/test_session_branches_api.py | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/backend/app/api/endpoints/session_branches.py b/backend/app/api/endpoints/session_branches.py index e946fefc..0fadd222 100644 --- a/backend/app/api/endpoints/session_branches.py +++ b/backend/app/api/endpoints/session_branches.py @@ -127,6 +127,7 @@ async def create_fork( ) await db.commit() + await db.refresh(fork_point) return ForkPointResponse.model_validate(fork_point) diff --git a/backend/app/models/script_template.py b/backend/app/models/script_template.py index d120d37c..8a60fd1d 100644 --- a/backend/app/models/script_template.py +++ b/backend/app/models/script_template.py @@ -1,7 +1,7 @@ import uuid from datetime import datetime, timezone from typing import Optional, TYPE_CHECKING -from sqlalchemy import String, Text, DateTime, ForeignKey, Boolean, Integer, Enum as SAEnum +from sqlalchemy import String, Text, DateTime, ForeignKey, Boolean, Integer, Enum as SAEnum, text from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy.dialects.postgresql import UUID, JSONB from app.core.database import Base @@ -64,13 +64,13 @@ class ScriptTemplate(Base): SAEnum("beginner", "intermediate", "advanced", name="script_complexity"), nullable=False, default="beginner" ) estimated_runtime: Mapped[Optional[str]] = mapped_column(String(50), nullable=True) - requires_elevation: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False) + requires_elevation: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False, server_default=text("false")) requires_modules: Mapped[list] = mapped_column(JSONB, nullable=False, default=list) version: Mapped[int] = mapped_column(Integer, nullable=False, default=1) is_verified: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False) is_active: Mapped[bool] = mapped_column(Boolean, nullable=False, default=True) - is_gallery_featured: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False, index=True) - gallery_sort_order: Mapped[int] = mapped_column(Integer, nullable=False, default=0) + is_gallery_featured: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False, server_default=text("false"), index=True) + gallery_sort_order: Mapped[int] = mapped_column(Integer, nullable=False, default=0, server_default=text("0")) usage_count: Mapped[int] = mapped_column(Integer, nullable=False, default=0) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(timezone.utc) diff --git a/backend/tests/test_session_branches_api.py b/backend/tests/test_session_branches_api.py index 74920f05..4bc0c1d8 100644 --- a/backend/tests/test_session_branches_api.py +++ b/backend/tests/test_session_branches_api.py @@ -106,6 +106,7 @@ async def test_switch_branch(client: AsyncClient, test_user, auth_headers, test_ ], }, ) + assert fork_resp.status_code == 201, fork_resp.text fork_data = fork_resp.json() branch_b_id = fork_data["options"][1]["branch_id"]