Skip to content

Commit 0eb35b3

Browse files
committed
refactor(tests): simplify issue repository usage in tests
1 parent 98c6579 commit 0eb35b3

File tree

5 files changed

+40
-21
lines changed

5 files changed

+40
-21
lines changed

.trunk/trunk.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ lint:
2323
2424
2525
26-
26+
2727
2828
29-
30-
29+
30+
3131
32-
32+
3333
actions:
3434
enabled:
3535
- trunk-upgrade-available

app/tests/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from app.core.factory import create_app
1414
from app.resource_adapters.persistence.sqlmodel.database import get_engine
1515
from app.resource_adapters.persistence.sqlmodel.issues import Issue
16-
from config import Settings, get_settings
16+
from config import get_settings
1717

1818
# Specify the custom .env file
1919
dotenv_path = Path(".env.testing")

app/tests/domain/test_issue.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ def test_initial_state():
88
assert IssueState.OPEN.value == "OPEN"
99
assert IssueState.CLOSED.value == "CLOSED"
1010

11+
1112
def test_is_open_property():
1213
"""Test the is_open property returns correct values"""
1314
assert IssueState.OPEN.is_open is True
1415
assert IssueState.CLOSED.is_open is False
1516

17+
1618
def test_valid_transitions():
1719
"""Test all valid state transitions"""
1820
# Test closing an open issue
@@ -29,6 +31,7 @@ def test_valid_transitions():
2931
new_state = state.transition(IssueTransitionType.REOPEN)
3032
assert new_state == IssueState.OPEN
3133

34+
3235
def test_invalid_transitions():
3336
"""Test that invalid transitions raise appropriate errors"""
3437
# Test cannot close an already closed issue
@@ -43,6 +46,7 @@ def test_invalid_transitions():
4346
IssueState.OPEN.transition(IssueTransitionType.REOPEN)
4447
assert "Cannot perform REOPEN transition from state OPEN" in str(exc_info.value)
4548

49+
4650
def test_unknown_transition_type():
4751
"""Test that using an undefined transition type raises an error"""
4852

@@ -55,6 +59,7 @@ def __str__(self):
5559
IssueState.OPEN.transition(FakeTransitionType())
5660
assert "Unknown transition type: FAKE_TRANSITION" in str(exc_info.value)
5761

62+
5863
def test_transitions_immutability():
5964
"""Test that the transitions dictionary cannot be modified at runtime"""
6065
transitions = IssueState.transitions()

app/tests/test_issues.py

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import pytest
22
from fastapi.testclient import TestClient
3-
from loguru import logger
43
from sqlmodel import Session
54

65
from app.core.usecases.analyze_issue import AnalyzeIssue
@@ -14,14 +13,17 @@ def test_analyze_issue_command(client: TestClient, session: Session):
1413
issue_number = 1
1514
test_issue = Issue(issue_number=issue_number, issue_state=IssueState.OPEN)
1615

17-
repository = SQLModelIssueRepository(session)
16+
uow = SQLModelIssueRepository(session)
1817

19-
repository.add(test_issue)
20-
repository.commit()
21-
retrieved_issue = repository.get_by_id(issue_number)
22-
assert retrieved_issue.issue_number == issue_number
18+
with uow:
19+
uow.add(test_issue)
2320

24-
use_case = AnalyzeIssue(issue_number=issue_number, repo=repository)
21+
with uow:
22+
retrieved_issue = uow.get_by_id(issue_number)
23+
assert retrieved_issue.issue_number == issue_number
24+
assert retrieved_issue.issue_state == IssueState.OPEN
25+
26+
use_case = AnalyzeIssue(issue_number=issue_number, repo=uow)
2527
response = use_case.analyze()
2628
assert response.issue_number == issue_number
2729

@@ -31,10 +33,10 @@ def test_analyze_issue_client(client: TestClient, session: Session):
3133
issue_number = 1
3234
test_issue = Issue(issue_number=issue_number, issue_state=IssueState.OPEN)
3335

34-
repository = SQLModelIssueRepository(session)
36+
uow = SQLModelIssueRepository(session)
3537

36-
repository.add(test_issue)
37-
repository.commit()
38+
with uow:
39+
uow.add(test_issue)
3840

3941
response = client.post("/v1/issues/1/analyze")
4042
assert response.status_code == 200
@@ -45,11 +47,14 @@ def test_analyze_issue_not_found(client: TestClient, session: Session):
4547
# Test case 1: Successful analysis
4648
issue_number = 1
4749

48-
repository = SQLModelIssueRepository(session)
49-
retrieved_issue = repository.get_by_id(issue_number)
50-
assert retrieved_issue.issue_number == 0
50+
uow = SQLModelIssueRepository(session)
51+
52+
with uow:
53+
retrieved_issue = uow.get_by_id(issue_number)
54+
assert retrieved_issue.issue_number == 0
55+
56+
use_case = AnalyzeIssue(issue_number=issue_number, repo=uow)
5157

52-
use_case = AnalyzeIssue(issue_number=issue_number, repo=repository)
5358
with pytest.raises(NotFoundException) as exc_info:
5459
use_case.analyze()
5560
assert exc_info.value.message == "Issue not found"
@@ -58,7 +63,7 @@ def test_analyze_issue_not_found(client: TestClient, session: Session):
5863
assert response.status_code == 404
5964

6065

61-
def test_analyze_issue_invalid_number(client: TestClient, session: Session):
66+
def test_analyze_issue_invalid_number(client: TestClient):
6267
"""Test analyzing an issue with an invalid issue number."""
6368

6469
response = client.post("/v1/issues/abc/analyze")
@@ -70,8 +75,17 @@ def test_analyze_issue_invalid_number(client: TestClient, session: Session):
7075
assert error_detail[0]["loc"] == ["path", "issue_number"]
7176

7277

73-
def test_analyze_issue_unauthorized(client: TestClient):
78+
def test_analyze_issue_unauthorized(client: TestClient, session: Session):
7479
# Test case 3: Unauthorized access
80+
81+
issue_number = 456
82+
test_issue = Issue(issue_number=issue_number, issue_state=IssueState.OPEN)
83+
84+
uow = SQLModelIssueRepository(session)
85+
86+
with uow:
87+
uow.add(test_issue)
88+
7589
response = client.post("/v1/issues/456/analyze")
7690
assert response.status_code == 401
7791
assert response.json() == {"detail": "Unauthorized"}

rapidapi/api_tests.paw

5 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)