From f492b12479f72e7be5b0f7c8a891a2d8e409e7cc Mon Sep 17 00:00:00 2001 From: yann Date: Mon, 25 Aug 2025 17:00:57 +0200 Subject: [PATCH] fixture pytest db sqlite in mem --- tests/conftest.py | 72 +++++++++++++++++++++++++++++++---------------- 1 file changed, 47 insertions(+), 25 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index d74aa17..d198bd8 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,10 +1,18 @@ import pytest from models import Base, Credentials, Collaborator, Customer, Contract, Event -from db import engine -from sqlalchemy.orm import Session +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker from passlib.hash import argon2 -@pytest.fixture(scope="function") + +DB_URL = "sqlite:///:memory:" +engine = create_engine(DB_URL, echo=False) +SessionLocal = sessionmaker(bind=engine) + +cust1 = ("Cust1", "aa", 11, "Cust1CO") +cust2 = + +@pytest.fixture def session(): if not engine.url.get_backend_name() == "sqlite": raise RuntimeError("Use SQLite backend to run tests\n" @@ -13,41 +21,55 @@ def session(): Base.metadata.create_all(engine) try: - with Session() as session: + with SessionLocal() as session: yield session finally: Base.metadata.drop_all(engine) -@pytest.fixture(scope="function") +@pytest.fixture def seed(session): session.add_all( [ - Collaborator(name="Com", email="a", phone=1, team_id=1), - Collaborator(name="Man", email="b", phone=2, team_id=2), - Collaborator(name="Sup", email="c", phone=3, team_id=3), - Customer(name="Cust1", email="aa", phone=11, company="Cust1CO"), + Customer(cust1), Customer(name="Cust2", email="bb", phone=22, company="Cust2CO"), ] ) session.commit() + session.add_all( [ - Credentials(collaborator_id=1, - password_hash=argon2.hash("test")), - Credentials(collaborator_id=2, - password_hash=argon2.hash("test")), - Credentials(collaborator_id=3, - password_hash=argon2.hash("test")), - Contract(signed=0, amount=200000, customer_id=1, commercial_id=1), + Collaborator(name="Col1", email="aa", phone=1, team_id=1), + Collaborator(name="Col2", email="bb", phone=2, team_id=2), ] ) - session.commit() - session.add_all( - [ - Event(name="Event1", customer_contact="Test", - date_start="01.01.01", date_end="02.01.01", - location=".",contract_id=1, customer_id=1) - ] - ) - session.commit() \ No newline at end of file + # session.add_all( + # [ + # Collaborator(name="Com", email="a", phone=1, team_id=1), + # Collaborator(name="Man", email="b", phone=2, team_id=2), + # Collaborator(name="Sup", email="c", phone=3, team_id=3), + # Customer(name="Cust1", email="aa", phone=11, company="Cust1CO"), + # Customer(name="Cust2", email="bb", phone=22, company="Cust2CO"), + # ] + # ) + # session.commit() + # session.add_all( + # [ + # Credentials(collaborator_id=1, + # password_hash=argon2.hash("test")), + # Credentials(collaborator_id=2, + # password_hash=argon2.hash("test")), + # Credentials(collaborator_id=3, + # password_hash=argon2.hash("test")), + # Contract(signed=0, amount=200000, customer_id=1, commercial_id=1), + # ] + # ) + # session.commit() + # session.add_all( + # [ + # Event(name="Event1", customer_contact="Test", + # date_start="01.01.01", date_end="02.01.01", + # location=".",contract_id=1, customer_id=1), + # ] + # ) + # session.commit() \ No newline at end of file