From 95d29b21f541bd276ea4be248e4e01444904bb8a Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Sun, 9 Aug 2026 09:40:21 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=A7=AA=20[testing=20improvement]=20Ad?= =?UTF-8?q?d=20test=20for=20list=5Fprojects=20in=20projects.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/tests/test_api_projects.py | 95 ++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 backend/tests/test_api_projects.py diff --git a/backend/tests/test_api_projects.py b/backend/tests/test_api_projects.py new file mode 100644 index 000000000..c741342df --- /dev/null +++ b/backend/tests/test_api_projects.py @@ -0,0 +1,95 @@ +import uuid +import datetime as dt + +import pytest +from fastapi import FastAPI +from fastapi.testclient import TestClient + +from app.api.projects import router +from app.auth import CurrentUser, get_current_user +from app.db import get_read_session, get_session +from app.models import ProjectSpace + +app = FastAPI() +app.include_router(router) + +class FakeScalars: + def __init__(self, data: list) -> None: + self.data = data + + def all(self) -> list: + return self.data + +class FakeResult: + def __init__(self, data: list) -> None: + self.data = data + + def scalars(self) -> FakeScalars: + return FakeScalars(self.data) + +class FakeSession: + def __init__(self, execute_result: list | None = None) -> None: + self.execute_result = execute_result or [] + self.added: list[object] = [] + + def add(self, obj: object) -> None: + self.added.append(obj) + + async def flush(self) -> None: + pass + + async def commit(self) -> None: + pass + + async def execute( + self, stmt: object, *args: object, **kwargs: object + ) -> FakeResult: + return FakeResult(self.execute_result) + + +def fake_get_current_user() -> CurrentUser: + return CurrentUser( + user_account_uuid=uuid.uuid4(), subject="test_user", display_name=None + ) + + +app.dependency_overrides[get_current_user] = fake_get_current_user + + +def test_list_projects_success() -> None: + """Test that listing projects returns the correct payload.""" + fake_project = ProjectSpace( + project_space_uuid=uuid.uuid4(), + project_name="Test Project", + created_by_user_uuid=uuid.uuid4(), + created_at=dt.datetime.now(dt.timezone.utc), + ) + + def fake_get_read_session() -> FakeSession: + return FakeSession([fake_project]) + + app.dependency_overrides[get_read_session] = fake_get_read_session + + client = TestClient(app) + response = client.get("/api/projects") + + assert response.status_code == 200 + data = response.json() + assert len(data) == 1 + assert data[0]["project_name"] == "Test Project" + assert data[0]["project_space_uuid"] == str(fake_project.project_space_uuid) + + +def test_list_projects_empty() -> None: + """Test that listing projects returns an empty list when no projects exist.""" + def fake_get_read_session() -> FakeSession: + return FakeSession([]) + + app.dependency_overrides[get_read_session] = fake_get_read_session + + client = TestClient(app) + response = client.get("/api/projects") + + assert response.status_code == 200 + data = response.json() + assert len(data) == 0 From 7439573d01cd86353075182140c7b7d6688843b7 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Thu, 13 Aug 2026 13:36:44 +0900 Subject: [PATCH 2/2] test: remove unused project API imports --- backend/tests/test_api_projects.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/backend/tests/test_api_projects.py b/backend/tests/test_api_projects.py index c741342df..d5d829548 100644 --- a/backend/tests/test_api_projects.py +++ b/backend/tests/test_api_projects.py @@ -1,13 +1,12 @@ import uuid import datetime as dt -import pytest from fastapi import FastAPI from fastapi.testclient import TestClient from app.api.projects import router from app.auth import CurrentUser, get_current_user -from app.db import get_read_session, get_session +from app.db import get_read_session from app.models import ProjectSpace app = FastAPI()