Skip to content

Commit 8e9ffcd

Browse files
committed
generated file: tests/conftest.py
1 parent 63d8290 commit 8e9ffcd

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

tests/conftest.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import pytest
2+
from fastapi.testclient import TestClient
3+
from sqlalchemy import create_engine
4+
from sqlalchemy.orm import sessionmaker
5+
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
6+
from sqlalchemy.ext.declarative import declarative_base
7+
8+
from openai_api_client.main import app
9+
from openai_api_client.dependencies.database import Base, get_async_session
10+
from openai_api_client.services.user import user_service
11+
from openai_api_client.services.openai import openai_service
12+
from openai_api_client.models.user import User
13+
from openai_api_client.schemas.user import UserCreate
14+
15+
# --- Database Setup ---
16+
17+
@pytest.fixture(scope="session")
18+
async def async_session():
19+
async_engine = create_async_engine(
20+
"postgresql://user:password@host:port/database", echo=True
21+
)
22+
async_session = sessionmaker(
23+
autocommit=False,
24+
autoflush=False,
25+
bind=async_engine,
26+
class_=AsyncSession,
27+
)
28+
async with async_session() as session:
29+
yield session
30+
31+
@pytest.fixture(scope="session")
32+
async def engine():
33+
async_engine = create_async_engine(
34+
"postgresql://user:password@host:port/database", echo=True
35+
)
36+
async with async_engine.begin() as conn:
37+
await conn.run_sync(Base.metadata.create_all)
38+
yield async_engine
39+
40+
# --- Mock Services ---
41+
42+
@pytest.fixture
43+
async def mock_user_service(async_session):
44+
async with user_service(db=async_session) as service:
45+
yield service
46+
47+
@pytest.fixture
48+
async def mock_openai_service():
49+
async with openai_service() as service:
50+
yield service
51+
52+
# --- Test Client ---
53+
54+
@pytest.fixture
55+
def client():
56+
return TestClient(app)
57+
58+
# --- Test Data ---
59+
60+
@pytest.fixture
61+
async def test_user(mock_user_service):
62+
user_data = UserCreate(
63+
username="testuser",
64+
email="test@example.com",
65+
password="testpassword",
66+
)
67+
user = await mock_user_service.create_user(user_data)
68+
yield user
69+
await mock_user_service.delete_user(user.id)

0 commit comments

Comments
 (0)