la-chariotte/la_chariotte/tests/test_order_views_item.py

80 lines
2.6 KiB
Python

import pytest
from django.contrib import auth
from django.urls import reverse
from la_chariotte.order import models
from .utils import create_grouped_order
pytestmark = pytest.mark.django_db
class TestItemCreateView:
def test_create_item(self, client_log):
"""A user that has created a grouped order adds an item to it."""
grouped_order = create_grouped_order(
days_before_delivery_date=5,
days_before_deadline=2,
name="gr order test",
orga_user=auth.get_user(client_log),
)
create_item_view_url = reverse(
"order:item_create",
kwargs={
"code": grouped_order.code,
},
)
response = client_log.post(
create_item_view_url, {"name": "titre item", "price": 2}
)
assert response.status_code == 302
assert response.url == reverse(
"order:manage_items",
kwargs={
"code": grouped_order.code,
},
)
assert models.Item.objects.first().name == "titre item"
response = client_log.get(response.url)
assert "titre item" in response.content.decode()
def test_create_item__anonymous_user(self, client, other_user):
"""
A user that is not logged cannot create an item. They get a redirected to loginview.
"""
grouped_order = create_grouped_order(
days_before_delivery_date=5,
days_before_deadline=2,
name="gr order test",
orga_user=other_user,
)
create_item_view_url = reverse(
"order:item_create",
kwargs={
"code": grouped_order.code,
},
)
response = client.post(create_item_view_url, {"name": "titre item"})
assert response.status_code == 302
assert (
response.url == f"{reverse('accounts:login')}?next={create_item_view_url}"
)
def test_create_item__not_orga(self, client_log, other_user):
"""
A user that is not orga cannot create an item. They get a 403 error.
"""
grouped_order = create_grouped_order(
days_before_delivery_date=5,
days_before_deadline=2,
name="gr order test",
orga_user=other_user,
)
create_item_view_url = reverse(
"order:item_create",
kwargs={
"code": grouped_order.code,
},
)
response = client_log.post(create_item_view_url, {"name": "titre item"})
assert response.status_code == 403