diff --git a/copanier/__init__.py b/copanier/__init__.py index ef4cd28..25ee36f 100644 --- a/copanier/__init__.py +++ b/copanier/__init__.py @@ -250,7 +250,11 @@ async def signing_sheet(request, response, id): @auth_required async def place_order(request, response, id): delivery = Delivery.load(id) - email = request.query.get("email") + email = request.query.get("email", None) + if not email: + user = session.user.get(None) + if user: + email = user.email order = Order() form = request.form for product in delivery.products: diff --git a/tests/conftest.py b/tests/conftest.py index 0b12b8c..8ce4e56 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -8,7 +8,7 @@ from roll.testing import Client as BaseClient from copanier import app as copanier_app from copanier import config as kconfig from copanier import create_token -from copanier.models import Delivery, Person +from copanier.models import Delivery, Person, Product def pytest_configure(config): @@ -69,6 +69,7 @@ def delivery(): from_date=datetime.now() + timedelta(days=10), to_date=datetime.now() + timedelta(days=10), order_before=datetime.now() + timedelta(days=7), + products=[Product(name="Lait", ref="123", price=1.5)], ) diff --git a/tests/test_models.py b/tests/test_models.py index cf770ec..b957bbe 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -54,6 +54,7 @@ def test_can_create_delivery_with_products(): def test_can_add_product_to_delivery(delivery): + delivery.products = [] assert not delivery.products delivery.products.append(Product(name="Chocolat", ref="choco", price=10)) assert len(delivery.products) == 1 diff --git a/tests/test_views.py b/tests/test_views.py index 815194b..de84906 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -45,3 +45,15 @@ async def test_create_delivery(client): assert delivery.to_date.year == 2019 assert delivery.to_date.hour == 20 assert delivery.to_date.minute == 0 + + +async def test_place_order_with_session(client, delivery): + delivery.persist() + body = { + "123": "3", + } + resp = await client.post(f"/livraison/{delivery.id}/commander", body=body) + assert resp.status == 302 + delivery = list(Delivery.all())[0] + assert delivery.orders["foo@bar.org"] + assert delivery.orders["foo@bar.org"].products["123"].wanted == 3