Skip to content

Commit 690dab5

Browse files
authored
Merge pull request #11 from getmarkus/cm-branch-10
updated test
2 parents cde9d10 + 0bf96ab commit 690dab5

File tree

1 file changed

+42
-12
lines changed

1 file changed

+42
-12
lines changed

tests/test_issues.py

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
import pytest
21
from fastapi.testclient import TestClient
3-
from sqlmodel import Session, SQLModel, create_engine
2+
import pytest
3+
from sqlmodel import SQLModel, Session, create_engine
44
from sqlmodel.pool import StaticPool
55

66
from main import app
77
from src.domain.issue import Issue, IssueState
88
from src.resource_adapters.persistence.sqlmodel.database import get_db
99
from src.resource_adapters.persistence.sqlmodel.issues import SQLModelIssueRepository
10+
from src.app.usecases.analyze_issue import AnalyzeIssue
11+
from src.interface_adapters.exceptions import NotFoundException
1012

1113

1214
# https://sqlmodel.tiangolo.com/tutorial/fastapi/tests/
@@ -34,31 +36,59 @@ def get_session_override():
3436

3537

3638
class TestAnalyzeIssue:
37-
def test_analyze_issue(self, client: TestClient, session: Session):
39+
def test_analyze_issue_command(self, client: TestClient, session: Session):
3840
# Test case 1: Successful analysis
3941
issue_number = 1
4042
test_issue = Issue(issue_number=issue_number, issue_state=IssueState.OPEN)
4143

4244
repository = SQLModelIssueRepository(session)
4345

4446
repository.add(test_issue)
47+
repository.commit()
48+
retrieved_issue = repository.get_by_id(issue_number)
49+
assert retrieved_issue.issue_number == issue_number
50+
51+
use_case = AnalyzeIssue(issue_number=issue_number, repo=repository)
52+
response = use_case.analyze()
53+
assert response.issue_number == issue_number
4554

55+
def test_analyze_issue_client(self, client: TestClient, session: Session):
56+
# Test case 1: Successful analysis
4657
response = client.post("/issues/1/analyze")
4758
#assert response.status_code == 200
4859
assert response.json() == {"version": 1, "issue_number": 1}
60+
61+
def test_analyze_issue_not_found(self, client: TestClient, session: Session):
62+
# Test case 1: Successful analysis
63+
issue_number = 1
64+
65+
repository = SQLModelIssueRepository(session)
66+
retrieved_issue = repository.get_by_id(issue_number)
67+
assert retrieved_issue.issue_number == 0
68+
69+
use_case = AnalyzeIssue(issue_number=issue_number, repo=repository)
70+
with pytest.raises(NotFoundException) as exc_info:
71+
use_case.analyze()
72+
assert exc_info.value.message == "Issue not found"
73+
74+
response = client.post("/issues/1/analyze")
75+
assert response.status_code == 404
76+
77+
def test_analyze_issue_invalid_number(self, client: TestClient, session: Session):
78+
"""Test analyzing an issue with an invalid issue number."""
4979

50-
# Test case 2: Invalid issue number
51-
try:
52-
response = client.post("/issues/abc/analyze")
53-
assert response.status_code == 422
54-
# assert response.json() == {"detail": "Invalid issue number"}
55-
except Exception as e:
56-
print(response.status_code)
57-
print(f"An error occurred: {e}")
80+
response = client.post("/issues/abc/analyze")
81+
assert response.status_code == 422
82+
# Validate error response structure
83+
error_detail = response.json()["detail"]
84+
assert isinstance(error_detail, list)
85+
assert error_detail[0]["type"] == "int_parsing"
86+
assert error_detail[0]["loc"] == ["path", "issue_number"]
5887

88+
def test_analyze_issue_unauthorized(self, client: TestClient):
5989
# Test case 3: Unauthorized access
6090
response = client.post("/issues/456/analyze")
6191
assert response.status_code == 401
62-
assert response.json() == {"detail": "Unauthorized"}
92+
assert response.js_on() == {"detail": "Unauthorized"}
6393

6494
# Add more test cases as needed

0 commit comments

Comments
 (0)