185 lines
5.2 KiB
Python
185 lines
5.2 KiB
Python
import pytest
|
|
import datetime
|
|
from sqlmodel import Session
|
|
|
|
import src.models as models
|
|
import src.forms.service as forms_service
|
|
import src.shipments.service as shipments_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.shipments as shipments_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 users(session: Session) -> list[models.UserPublic]:
|
|
users = [
|
|
users_service.create_one(
|
|
session,
|
|
users_factory.user_create_factory(
|
|
name='test user 1 (admin)',
|
|
email='test1@test.com',
|
|
role_names=[
|
|
'Légumineuses',
|
|
'Légumes',
|
|
'Oeufs',
|
|
'Porc-Agneau',
|
|
'Vin',
|
|
'Fruits'])),
|
|
users_service.create_one(
|
|
session,
|
|
users_factory.user_create_factory(
|
|
name='test user 2',
|
|
email='test2@test.com',
|
|
role_names=['Légumineuses'])),
|
|
users_service.create_one(
|
|
session,
|
|
users_factory.user_create_factory(
|
|
name='test user 3',
|
|
email='test3@test.com',
|
|
role_names=['Porc-Agneau']))]
|
|
return users
|
|
|
|
|
|
@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 shipments(session: Session,
|
|
forms: list[models.FormPublic],
|
|
products: list[models.ProductPublic]):
|
|
shipments = [
|
|
shipments_service.create_one(
|
|
session,
|
|
shipments_factory.shipment_create_factory(
|
|
name='test shipment 1',
|
|
date=datetime.date(2025, 10, 10),
|
|
form_id=forms[0].id,
|
|
product_ids=[p.id for p in products]
|
|
)
|
|
),
|
|
shipments_service.create_one(
|
|
session,
|
|
shipments_factory.shipment_create_factory(
|
|
name='test shipment 2',
|
|
date=datetime.date(2025, 11, 10),
|
|
form_id=forms[0].id,
|
|
product_ids=[p.id for p in products]
|
|
)
|
|
),
|
|
]
|
|
return shipments
|
|
|
|
|
|
@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
|