mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-04-29 18:32:38 +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.forms.utils import to_current_timezone
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
from icalendar import Calendar, vText
|
||||||
|
|
||||||
from la_chariotte.order import models
|
from la_chariotte.order import models
|
||||||
from la_chariotte.order.tests.utils import (
|
from la_chariotte.order.tests.utils import (
|
||||||
|
@ -681,6 +682,7 @@ class TestGroupedOrderOverview:
|
||||||
response = client_log.get(overview_url)
|
response = client_log.get(overview_url)
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
assert "test item" in response.content.decode()
|
assert "test item" in response.content.decode()
|
||||||
|
assert {"test@mail.fr"} == response.context["emails_list"]
|
||||||
assert "gr order test" in response.content.decode()
|
assert "gr order test" in response.content.decode()
|
||||||
item.refresh_from_db()
|
item.refresh_from_db()
|
||||||
assert item.get_total_price() == 8
|
assert item.get_total_price() == 8
|
||||||
|
@ -1175,6 +1177,55 @@ class TestGroupedOrderDeleteView:
|
||||||
assert models.GroupedOrder.objects.count() == 1
|
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:
|
class TestGroupedOrderDuplicateView:
|
||||||
def test_duplicate_grouped_order(self, client_log):
|
def test_duplicate_grouped_order(self, client_log):
|
||||||
"""The orga of the GO duplicates it.
|
"""The orga of the GO duplicates it.
|
||||||
|
@ -1335,11 +1386,8 @@ class TestGroupedOrderSheetView:
|
||||||
assert orders[2].author.last_name == "lescargot"
|
assert orders[2].author.last_name == "lescargot"
|
||||||
|
|
||||||
|
|
||||||
class TestExportGroupedOrderEmailAddressesToCSVView:
|
class TestExportGroupOrderEmailAdressesToDownloadView:
|
||||||
def test_user_not_logged_gets_redirected(self, client, other_user):
|
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(
|
grouped_order = create_grouped_order(
|
||||||
days_before_delivery_date=5,
|
days_before_delivery_date=5,
|
||||||
days_before_deadline=2,
|
days_before_deadline=2,
|
||||||
|
@ -1359,10 +1407,6 @@ class TestExportGroupedOrderEmailAddressesToCSVView:
|
||||||
assert response.url.endswith(email_list_view_url)
|
assert response.url.endswith(email_list_view_url)
|
||||||
|
|
||||||
def test_user_not_orga_forbidden(self, client_log, other_user):
|
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(
|
grouped_order = create_grouped_order(
|
||||||
days_before_delivery_date=5,
|
days_before_delivery_date=5,
|
||||||
days_before_deadline=2,
|
days_before_deadline=2,
|
||||||
|
@ -1379,9 +1423,6 @@ class TestExportGroupedOrderEmailAddressesToCSVView:
|
||||||
assert response.status_code == 403
|
assert response.status_code == 403
|
||||||
|
|
||||||
def test_email_addresses(self, client_log):
|
def test_email_addresses(self, client_log):
|
||||||
"""
|
|
||||||
The grouped order orga accesseses the email addresses list
|
|
||||||
"""
|
|
||||||
grouped_order = create_grouped_order(
|
grouped_order = create_grouped_order(
|
||||||
days_before_delivery_date=5,
|
days_before_delivery_date=5,
|
||||||
days_before_deadline=2,
|
days_before_deadline=2,
|
||||||
|
@ -1403,6 +1444,95 @@ class TestExportGroupedOrderEmailAddressesToCSVView:
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
assert email in response.content.decode()
|
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:
|
class TestExportGroupedOrderToCSVView:
|
||||||
def test_user_not_logged_gets_redirected(self, client, other_user):
|
def test_user_not_logged_gets_redirected(self, client, other_user):
|
||||||
|
|
Loading…
Reference in a new issue