From d29a3f5cda8dc931137fe7db0afa0568959aa3a8 Mon Sep 17 00:00:00 2001 From: Abhimanyu Saharan Date: Thu, 5 Feb 2026 15:00:20 +0530 Subject: [PATCH] fix: allow draft goal boards --- backend/app/schemas/boards.py | 6 ++++-- backend/tests/test_board_schema.py | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/backend/app/schemas/boards.py b/backend/app/schemas/boards.py index 79b12591..3ea5a462 100644 --- a/backend/app/schemas/boards.py +++ b/backend/app/schemas/boards.py @@ -22,9 +22,11 @@ class BoardBase(SQLModel): class BoardCreate(BoardBase): @model_validator(mode="after") def validate_goal_fields(self): - if self.board_type == "goal": + if self.board_type == "goal" and self.goal_confirmed: if not self.objective or not self.success_metrics: - raise ValueError("Goal boards require objective and success_metrics") + raise ValueError( + "Confirmed goal boards require objective and success_metrics" + ) return self diff --git a/backend/tests/test_board_schema.py b/backend/tests/test_board_schema.py index db18fa66..a8857cfe 100644 --- a/backend/tests/test_board_schema.py +++ b/backend/tests/test_board_schema.py @@ -3,18 +3,28 @@ import pytest from app.schemas.boards import BoardCreate -def test_goal_board_requires_objective_and_metrics(): +def test_goal_board_requires_objective_and_metrics_when_confirmed(): with pytest.raises(ValueError): - BoardCreate(name="Goal Board", slug="goal", board_type="goal") + BoardCreate( + name="Goal Board", + slug="goal", + board_type="goal", + goal_confirmed=True, + ) BoardCreate( name="Goal Board", slug="goal", board_type="goal", + goal_confirmed=True, objective="Launch onboarding", success_metrics={"emails": 3}, ) +def test_goal_board_allows_missing_objective_before_confirmation(): + BoardCreate(name="Draft", slug="draft", board_type="goal") + + def test_general_board_allows_missing_objective(): BoardCreate(name="General", slug="general", board_type="general")