import pytest from sqlmodel import Session import src.models as models import src.forms.service as forms_service import src.productors.service as productors_service import src.products.service as products_service import src.users.service as users_service import tests.factories.forms as forms_factory import tests.factories.productors as productors_factory import tests.factories.products as products_factory import tests.factories.users as users_factory @pytest.fixture def productor(session: Session) -> models.ProductorPublic: productor = productors_service.create_one( session, productors_factory.productor_create_factory( name='test productor', type='Légumineuses', ) ) return productor @pytest.fixture def productors(session: Session) -> models.ProductorPublic: productors = [ productors_service.create_one( session, productors_factory.productor_create_factory( name='test productor 1', type='Légumineuses', ) ), productors_service.create_one( session, productors_factory.productor_create_factory( name='test productor 2', type='Légumes', ) ) ] return productors @pytest.fixture def products(session: Session, productor: models.ProductorPublic) -> list[models.ProductPublic]: products = [ products_service.create_one( session, products_factory.product_create_factory( name='product 1 occasionnal', type=models.ProductType.OCCASIONAL, productor_id=productor.id ) ), products_service.create_one( session, products_factory.product_create_factory( name='product 2 recurrent', type=models.ProductType.RECCURENT, productor_id=productor.id ) ), ] return products @pytest.fixture def user(session: Session) -> models.UserPublic: user = users_service.create_one( session, users_factory.user_create_factory( name='test user', email='test@test.com', role_names=['Légumineuses'] ) ) return user @pytest.fixture def referer(session: Session) -> models.UserPublic: referer = users_service.create_one( session, users_factory.user_create_factory( name='test referer', email='test@test.com', role_names=['Légumineuses'], ) ) return referer @pytest.fixture def forms( session: Session, productor: models.ProductorPublic, referer: models.UserPublic ) -> list[models.FormPublic]: forms = [ forms_service.create_one( session, forms_factory.form_create_factory( name='test form 1', productor_id=productor.id, referer_id=referer.id, season='test season 1', ) ), forms_service.create_one( session, forms_factory.form_create_factory( name='test form 2', productor_id=productor.id, referer_id=referer.id, season='test season 2', ) ) ] return forms