fix: correct get_default_project() query to check for True instead of not NULL (#521)

Signed-off-by: phernandez <paul@basicmachines.co>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Paul Hernandez
2026-01-24 11:37:05 -06:00
committed by GitHub
parent 38616c345d
commit 6888effef2
2 changed files with 34 additions and 1 deletions
@@ -88,7 +88,7 @@ class ProjectRepository(Repository[Project]):
async def get_default_project(self) -> Optional[Project]:
"""Get the default project (the one marked as is_default=True)."""
query = self.select().where(Project.is_default.is_not(None))
query = self.select().where(Project.is_default.is_(True))
return await self.find_one(query)
async def get_active_projects(self) -> Sequence[Project]:
@@ -136,6 +136,39 @@ async def test_get_default_project(project_repository: ProjectRepository, test_p
assert default_project.is_default is True
@pytest.mark.asyncio
async def test_get_default_project_with_false_values(project_repository: ProjectRepository):
"""Test that get_default_project ignores projects with is_default=False.
Regression test for bug where is_not(None) matched both True and False,
causing MultipleResultsFound when multiple projects had different boolean values.
"""
# Create projects with explicit is_default values
project_true = await project_repository.create({
"name": "Default Project",
"path": "/default/path",
"is_default": True,
})
await project_repository.create({
"name": "Not Default Project",
"path": "/not-default/path",
"is_default": False,
})
await project_repository.create({
"name": "Null Default Project",
"path": "/null/path",
"is_default": None,
})
# Should return only the project with is_default=True
default = await project_repository.get_default_project()
assert default is not None
assert default.id == project_true.id
assert default.name == "Default Project"
@pytest.mark.asyncio
async def test_get_active_projects(project_repository: ProjectRepository):
"""Test getting all active projects."""