43 lines
1.7 KiB
Python
43 lines
1.7 KiB
Python
from types import SimpleNamespace
|
|
|
|
import pytest
|
|
from django.contrib import admin
|
|
|
|
from apps.events.admin import EventAdmin
|
|
from apps.events.models import Event
|
|
|
|
|
|
pytestmark = pytest.mark.unit
|
|
|
|
|
|
def test_event_admin_formats_empty_price_and_capacity():
|
|
model_admin = EventAdmin(Event, admin.site)
|
|
event = SimpleNamespace(price=None, capacity=None, current_attendees_count=3, is_registration_open=True)
|
|
assert model_admin.price_display(event) == "رایگان"
|
|
assert model_admin.capacity_display(event) == "نامحدود"
|
|
assert model_admin.attendees_display(event) == 3
|
|
assert model_admin.is_registration_open_display(event)
|
|
|
|
|
|
def test_event_admin_status_actions_update_selection(mocker):
|
|
model_admin = EventAdmin(Event, admin.site)
|
|
mocker.patch.object(model_admin, "message_user")
|
|
cancel_checkouts = mocker.patch("apps.events.admin.cancel_event_checkouts")
|
|
queryset = mocker.Mock()
|
|
queryset.count.return_value = 2
|
|
for action, status in (
|
|
(model_admin.make_published, Event.StatusChoices.PUBLISHED),
|
|
(model_admin.make_draft, Event.StatusChoices.DRAFT),
|
|
(model_admin.make_completed, Event.StatusChoices.COMPLETED),
|
|
):
|
|
action(SimpleNamespace(), queryset)
|
|
queryset.update.assert_called_with(status=status)
|
|
|
|
published = SimpleNamespace(status=Event.StatusChoices.PUBLISHED, pk=10, save=mocker.Mock())
|
|
already_cancelled = SimpleNamespace(status=Event.StatusChoices.CANCELLED, pk=11, save=mocker.Mock())
|
|
model_admin.make_cancelled(SimpleNamespace(), [published, already_cancelled])
|
|
|
|
published.save.assert_called_once_with(update_fields=["status"])
|
|
already_cancelled.save.assert_not_called()
|
|
cancel_checkouts.assert_called_once_with(published.pk)
|