import pytest from models import Base, Credentials, Collaborator, Customer, Contract, Event from db import engine from sqlalchemy.orm import Session from passlib.hash import argon2 @pytest.fixture(scope="function") def session(): if not engine.url.get_backend_name() == "sqlite": raise RuntimeError("Use SQLite backend to run tests\n" "with command :\n" "DB_URL=sqlite:///:memory: pytest -s -v .") Base.metadata.create_all(engine) try: with Session() as session: yield session finally: Base.metadata.drop_all(engine) @pytest.fixture(scope="function") 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(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()