Skip to content

Commit

Permalink
fix(registration): allow large remaining capacities
Browse files Browse the repository at this point in the history
Refs: LINK-2101
  • Loading branch information
harriris-vincit committed Jun 26, 2024
1 parent 430522b commit 4a841e3
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Generated by Django 4.2.13 on 2024-06-25 07:38

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("registrations", "0052_alter_registration_min_and_max_attendee_capacity"),
]

operations = [
migrations.AlterField(
model_name="registration",
name="remaining_attendee_capacity",
field=models.PositiveIntegerField(blank=True, default=None, null=True),
),
migrations.AlterField(
model_name="registration",
name="remaining_waiting_list_capacity",
field=models.PositiveIntegerField(blank=True, default=None, null=True),
),
migrations.AlterField(
model_name="registration",
name="waiting_list_capacity",
field=models.PositiveIntegerField(
blank=True, null=True, verbose_name="Waiting list capacity"
),
),
]
6 changes: 3 additions & 3 deletions registrations/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -458,7 +458,7 @@ class Registration(CreatedModifiedBaseModel):
minimum_attendee_capacity = models.PositiveIntegerField(
verbose_name=_("Minimum attendee capacity"), null=True, blank=True
)
waiting_list_capacity = models.PositiveSmallIntegerField(
waiting_list_capacity = models.PositiveIntegerField(
verbose_name=_("Waiting list capacity"), null=True, blank=True
)
maximum_group_size = models.PositiveSmallIntegerField(
Expand Down Expand Up @@ -487,10 +487,10 @@ class Registration(CreatedModifiedBaseModel):
through_fields=("registration", "price_group"),
)

remaining_attendee_capacity = models.PositiveSmallIntegerField(
remaining_attendee_capacity = models.PositiveIntegerField(
blank=True, null=True, default=None
)
remaining_waiting_list_capacity = models.PositiveSmallIntegerField(
remaining_waiting_list_capacity = models.PositiveIntegerField(
blank=True,
null=True,
default=None,
Expand Down
52 changes: 50 additions & 2 deletions registrations/tests/test_registration_post.py
Original file line number Diff line number Diff line change
Expand Up @@ -1118,7 +1118,7 @@ def test_create_registration_with_product_accounting_api_exception(
(1000000, 1000000, status.HTTP_201_CREATED),
],
)
@pytest.mark.django_db
@pytest.mark.django_db(transaction=True)
def test_create_registration_maximum_attendee_capacity(
api_client,
event,
Expand All @@ -1145,6 +1145,54 @@ def test_create_registration_maximum_attendee_capacity(
assert (
registration.maximum_attendee_capacity == expected_maximum_attendee_capacity
)
assert (
registration.remaining_attendee_capacity
== expected_maximum_attendee_capacity
)
else:
assert Registration.objects.count() == 0


@pytest.mark.parametrize(
"waiting_list_capacity, expected_waiting_list_capacity, expected_status_code",
[
("", None, status.HTTP_400_BAD_REQUEST),
(None, None, status.HTTP_201_CREATED),
(0, 0, status.HTTP_201_CREATED),
(1, 1, status.HTTP_201_CREATED),
(1000000, 1000000, status.HTTP_201_CREATED),
],
)
@pytest.mark.django_db(transaction=True)
def test_create_registration_waiting_list_capacity(
api_client,
event,
waiting_list_capacity,
expected_waiting_list_capacity,
expected_status_code,
):
user = create_user_by_role("registration_admin", event.publisher)
api_client.force_authenticate(user)

registration_data = {
"event": {"@id": get_event_url(event.pk)},
"maximum_attendee_capacity": 1000001,
"waiting_list_capacity": waiting_list_capacity,
}

assert Registration.objects.count() == 0

response = create_registration(api_client, registration_data)
assert response.status_code == expected_status_code

if expected_status_code == status.HTTP_201_CREATED:
assert Registration.objects.count() == 1
registration = Registration.objects.first()
assert registration.waiting_list_capacity == expected_waiting_list_capacity
assert (
registration.remaining_waiting_list_capacity
== expected_waiting_list_capacity
)
else:
assert Registration.objects.count() == 0

Expand All @@ -1158,7 +1206,7 @@ def test_create_registration_maximum_attendee_capacity(
(1000000, 1000000),
],
)
@pytest.mark.django_db
@pytest.mark.django_db(transaction=True)
def test_create_registration_minimum_attendee_capacity(
api_client, event, minimum_attendee_capacity, expected_minimum_attendee_capacity
):
Expand Down

0 comments on commit 4a841e3

Please sign in to comment.