Job_Tracker_API / tests /conftest.py
abdullah090809's picture
fixed conftest.py
915812a
Raw
History Blame Contribute Delete
2.79 kB
from fastapi.testclient import TestClient
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from app.cores.config import settings
import pytest
from app.cores.database import get_db, Base
from app.cores.security import create_access_token
from app.models.application import Application
from app.main import app
SQLALCHEMY_DATABASE_URL = f"postgresql://{settings.DATABASE_USERNAME}:{settings.DATABASE_PASSWORD}@{settings.DATABASE_HOSTNAME}:{settings.DATABASE_PORT}/{settings.DATABASE_NAME}"
engine = create_engine(SQLALCHEMY_DATABASE_URL)
TestingSessionMaker = sessionmaker(autoflush=False, autocommit=False, bind=engine)
@pytest.fixture()
def session():
Base.metadata.drop_all(bind=engine)
Base.metadata.create_all(bind=engine)
db = TestingSessionMaker()
try:
yield db
finally:
db.close()
@pytest.fixture()
def client(session):
def override_get_db():
try:
yield session
finally:
session.close()
app.dependency_overrides[get_db] = override_get_db
yield TestClient(app)
@pytest.fixture
def create_test_user(client):
user_data = {
"email": "abdullah@gmail.com",
"password": "abdullah1234"
}
response = client.post("/users", json=user_data)
assert response.status_code == 201
new_user = response.json()
new_user["password"] = "abdullah1234"
return new_user
@pytest.fixture
def create_test_user2(client):
user_data = {
"email": "ali@gmail.com",
"password": "ali1234"
}
response = client.post("/users", json=user_data)
assert response.status_code == 201
new_user = response.json()
new_user["password"] = "ali1234"
return new_user
@pytest.fixture()
def token(create_test_user):
return create_access_token({"user_id": create_test_user["id"]})
@pytest.fixture()
def authorized_client(client, token):
client.headers = {
**client.headers,
"Authorization": f"Bearer {token}"
}
return client
def create_application(application_data):
return Application(**application_data)
@pytest.fixture
def test_applications(create_test_user, session):
applications_data = [
{"company": "Google", "role": "Backend Engineer", "status": "applied", "applied_date": "2026-06-01", "user_id": create_test_user["id"]},
{"company": "Meta", "role": "SWE", "status": "interview", "applied_date": "2026-06-10", "user_id": create_test_user["id"]},
{"company": "Amazon", "role": "SDE", "status": "rejected", "applied_date": "2026-06-15", "user_id": create_test_user["id"]},
]
applications = list(map(create_application, applications_data))
session.add_all(applications)
session.commit()
return session.query(Application).all()