diff --git a/Pipfile b/Pipfile index a630cd6..6c46347 100644 --- a/Pipfile +++ b/Pipfile @@ -6,10 +6,13 @@ name = "pypi" [packages] fastapi = "*" uvicorn = "*" +sqlalchemy = "<2.0.0" +wheel = "*" [dev-packages] pytest = "*" selenium = "*" +httpx = "*" [requires] -python_version = "3.12" +python_version = "3.11" diff --git a/test_sql_database.py b/test_sql_database.py new file mode 100644 index 0000000..e43e407 --- /dev/null +++ b/test_sql_database.py @@ -0,0 +1,51 @@ +from fastapi.testclient import TestClient +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker +from sqlalchemy.pool import StaticPool + +from database import Base +from main import app, get_db +from models import Movie + +SQLALCHEMY_DATABASE_URL = "sqlite://" + +engine = create_engine( + SQLALCHEMY_DATABASE_URL, + connect_args={"check_same_thread": False}, + poolclass=StaticPool, +) +TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) + + +Base.metadata.create_all(bind=engine) + + +def override_get_db(): + try: + db = TestingSessionLocal() + yield db + finally: + db.close() + + +app.dependency_overrides[get_db] = override_get_db + +client = TestClient(app) + + +def test_create_moviem_models(): + import random + + name = f"rand_{random.randint(1, 1000)}" + movie = Movie(name=name) + + +def test_create_movie_api(): + import random + + name = f"rand_{random.randint(1, 1000)}" + response = client.post("movie", {"name": name}) + assert response.status == 200 + movie_id = response.json()["id"] + response = client.get("movie", movie_id) + assert response.json()["name"] == name