mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-04-29 10:22:39 +02:00
fix cov
This commit is contained in:
parent
d726284e00
commit
e28b697795
1 changed files with 141 additions and 11 deletions
|
@ -7,6 +7,7 @@ from django.contrib import auth
|
|||
from django.forms.utils import to_current_timezone
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
from icalendar import Calendar, vText
|
||||
|
||||
from la_chariotte.order import models
|
||||
from la_chariotte.order.tests.utils import (
|
||||
|
@ -681,6 +682,7 @@ class TestGroupedOrderOverview:
|
|||
response = client_log.get(overview_url)
|
||||
assert response.status_code == 200
|
||||
assert "test item" in response.content.decode()
|
||||
assert {"test@mail.fr"} == response.context["emails_list"]
|
||||
assert "gr order test" in response.content.decode()
|
||||
item.refresh_from_db()
|
||||
assert item.get_total_price() == 8
|
||||
|
@ -1175,6 +1177,55 @@ class TestGroupedOrderDeleteView:
|
|||
assert models.GroupedOrder.objects.count() == 1
|
||||
|
||||
|
||||
class TestGroupedOrderEventView:
|
||||
def test_get_event(self, client_log):
|
||||
# Setup
|
||||
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),
|
||||
)
|
||||
|
||||
event_url = reverse(
|
||||
"order:grouped_order_event",
|
||||
kwargs={
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.get(event_url)
|
||||
|
||||
# Check the response
|
||||
assert response.status_code == 200
|
||||
assert response["Content-Type"] == "text/calendar"
|
||||
assert (
|
||||
response["Content-Disposition"]
|
||||
== f"attachment; filename={grouped_order.name}.ics"
|
||||
)
|
||||
# Parse the iCal data
|
||||
cal = Calendar.from_ical(response.content.decode())
|
||||
# Check the event details
|
||||
for component in cal.walk():
|
||||
if component.name == "VEVENT":
|
||||
assert component.get("summary") == grouped_order.name
|
||||
assert component.get("dtstart").dt == grouped_order.delivery_date
|
||||
assert component.get(
|
||||
"dtend"
|
||||
).dt == grouped_order.delivery_date + datetime.timedelta(days=1)
|
||||
if grouped_order.description is None:
|
||||
assert (
|
||||
component.get("description").to_ical().decode("utf-8") == "None"
|
||||
)
|
||||
else:
|
||||
assert (
|
||||
component.get("description").to_ical().decode("utf-8")
|
||||
== grouped_order.description
|
||||
)
|
||||
assert (
|
||||
component.get("organizer") == "MAILTO:" + grouped_order.orga.email
|
||||
)
|
||||
|
||||
|
||||
class TestGroupedOrderDuplicateView:
|
||||
def test_duplicate_grouped_order(self, client_log):
|
||||
"""The orga of the GO duplicates it.
|
||||
|
@ -1335,11 +1386,8 @@ class TestGroupedOrderSheetView:
|
|||
assert orders[2].author.last_name == "lescargot"
|
||||
|
||||
|
||||
class TestExportGroupedOrderEmailAddressesToCSVView:
|
||||
class TestExportGroupOrderEmailAdressesToDownloadView:
|
||||
def test_user_not_logged_gets_redirected(self, client, other_user):
|
||||
"""
|
||||
A user that is not logged accesses the email list. They get redirected to the login view
|
||||
"""
|
||||
grouped_order = create_grouped_order(
|
||||
days_before_delivery_date=5,
|
||||
days_before_deadline=2,
|
||||
|
@ -1359,10 +1407,6 @@ class TestExportGroupedOrderEmailAddressesToCSVView:
|
|||
assert response.url.endswith(email_list_view_url)
|
||||
|
||||
def test_user_not_orga_forbidden(self, client_log, other_user):
|
||||
"""
|
||||
A user that is not orga cannot accesses the email list.
|
||||
They get a 403 forbidden error
|
||||
"""
|
||||
grouped_order = create_grouped_order(
|
||||
days_before_delivery_date=5,
|
||||
days_before_deadline=2,
|
||||
|
@ -1379,9 +1423,6 @@ class TestExportGroupedOrderEmailAddressesToCSVView:
|
|||
assert response.status_code == 403
|
||||
|
||||
def test_email_addresses(self, client_log):
|
||||
"""
|
||||
The grouped order orga accesseses the email addresses list
|
||||
"""
|
||||
grouped_order = create_grouped_order(
|
||||
days_before_delivery_date=5,
|
||||
days_before_deadline=2,
|
||||
|
@ -1403,6 +1444,95 @@ class TestExportGroupedOrderEmailAddressesToCSVView:
|
|||
assert response.status_code == 200
|
||||
assert email in response.content.decode()
|
||||
|
||||
def test_export_format_csv(self, client_log):
|
||||
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),
|
||||
)
|
||||
item = models.Item.objects.create(
|
||||
name="test item 1", grouped_order=grouped_order, price=2
|
||||
)
|
||||
|
||||
overview_url = reverse(
|
||||
"order:grouped_order_overview",
|
||||
kwargs={
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
order_url = reverse(
|
||||
"order:order",
|
||||
kwargs={
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
client_log.post(
|
||||
order_url,
|
||||
{
|
||||
f"quantity_{item.pk}": [4, 0],
|
||||
"first_name": "Prénom",
|
||||
"last_name": "Nom",
|
||||
"phone": "0645632569",
|
||||
"email": "test@mail.fr",
|
||||
"note": "",
|
||||
},
|
||||
)
|
||||
email_list_view_url = (
|
||||
reverse(
|
||||
"order:email_list",
|
||||
kwargs={
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
+ "?format=csv"
|
||||
)
|
||||
response = client_log.get(email_list_view_url)
|
||||
assert response.status_code == 200
|
||||
assert response["Content-Type"] == "text/csv"
|
||||
content = response.content.decode()
|
||||
assert "order_name,email" in content
|
||||
assert "order_name,email\r\ngr order test,test@mail.fr\r\n" in content
|
||||
|
||||
def test_export_format_default(self, client_log):
|
||||
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),
|
||||
)
|
||||
item = models.Item.objects.create(
|
||||
name="test item 1", grouped_order=grouped_order, price=2
|
||||
)
|
||||
order_url = reverse(
|
||||
"order:order",
|
||||
kwargs={
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
client_log.post(
|
||||
order_url,
|
||||
{
|
||||
f"quantity_{item.pk}": [4, 0],
|
||||
"first_name": "Prénom",
|
||||
"last_name": "Nom",
|
||||
"phone": "0645632569",
|
||||
"email": "test@mail.fr",
|
||||
"note": "",
|
||||
},
|
||||
)
|
||||
email_list_view_url = reverse(
|
||||
"order:email_list",
|
||||
kwargs={
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.get(email_list_view_url)
|
||||
assert response.status_code == 200
|
||||
assert response["Content-Type"] == "text/html; charset=utf-8"
|
||||
content = response.content.decode()
|
||||
assert "test@mail.fr" in content
|
||||
|
||||
|
||||
class TestExportGroupedOrderToCSVView:
|
||||
def test_user_not_logged_gets_redirected(self, client, other_user):
|
||||
|
|
Loading…
Reference in a new issue