mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-02 03:42:26 +02:00
80 lines
2.6 KiB
Python
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
|