diff --git a/program/tests/test_schedules.py b/program/tests/test_schedules.py index c72ca43c85d2f32143cec49f17f447902a2efcec..bee9458abad5d18361bdc689b552368dfd78d2dc 100644 --- a/program/tests/test_schedules.py +++ b/program/tests/test_schedules.py @@ -1,4 +1,5 @@ from datetime import datetime, timedelta +from typing import Any import pytest @@ -9,18 +10,14 @@ from program.tests.factories import RRuleFactory, ScheduleFactory pytestmark = pytest.mark.django_db -def url(show=None, schedule=None) -> str: - if show and schedule: - return f"/api/v1/shows/{show.id}/schedules/{schedule.id}/" - elif show and not schedule: - return f"/api/v1/shows/{show.id}/schedules/" - elif not show and schedule: +def url(schedule=None) -> str: + if schedule: return f"/api/v1/schedules/{schedule.id}/" else: return "/api/v1/schedules/" -def schedule_data(rrule) -> dict[str, dict[str | int]]: +def schedule_data(rrule, show) -> dict[str, dict[str, str | Any]]: now = datetime.now() in_an_hour = now + timedelta(hours=1) in_a_year = now + timedelta(days=365) @@ -31,15 +28,16 @@ def schedule_data(rrule) -> dict[str, dict[str | int]]: "first_date": now.strftime("%Y-%m-%d"), "last_date": in_a_year.strftime("%Y-%m-%d"), "rrule_id": rrule.id, + "show_id": show.id, "start_time": now.strftime("%H:%M:%S"), }, } def test_create_once_schedule(admin_api_client, once_rrule, show): - data = schedule_data(once_rrule) + data = schedule_data(once_rrule, show) - response = admin_api_client.post(url(show=show), data=data, format="json") + response = admin_api_client.post(url(), data=data, format="json") assert response.status_code == 201 assert TimeSlot.objects.all().count() == 1 @@ -49,9 +47,9 @@ def test_create_once_schedule(admin_api_client, once_rrule, show): def test_create_daily_schedule(admin_api_client, show): rrule = RRuleFactory(freq=3) - data = schedule_data(rrule) + data = schedule_data(rrule, show) - response = admin_api_client.post(url(show=show), data=data, format="json") + response = admin_api_client.post(url(), data=data, format="json") assert response.status_code == 201 assert TimeSlot.objects.all().count() == 365 or 366 @@ -61,9 +59,9 @@ def test_create_daily_schedule(admin_api_client, show): def test_create_business_days_schedule(admin_api_client, show): rrule = RRuleFactory(freq=2, by_weekdays="0,1,2,3,4") - data = schedule_data(rrule) + data = schedule_data(rrule, show) - response = admin_api_client.post(url(show=show), data=data, format="json") + response = admin_api_client.post(url(), data=data, format="json") assert response.status_code == 201 assert TimeSlot.objects.all().count() == 261 or 262 @@ -73,9 +71,9 @@ def test_create_business_days_schedule(admin_api_client, show): def test_create_weekends_schedule(admin_api_client, show): rrule = RRuleFactory(freq=2, by_weekdays="5,6") - data = schedule_data(rrule) + data = schedule_data(rrule, show) - response = admin_api_client.post(url(show=show), data=data, format="json") + response = admin_api_client.post(url(), data=data, format="json") assert response.status_code == 201 assert TimeSlot.objects.all().count() == 104 or 105 @@ -85,9 +83,9 @@ def test_create_weekends_schedule(admin_api_client, show): def test_create_weekly_schedule(admin_api_client, show): rrule = RRuleFactory(freq=2) - data = schedule_data(rrule) + data = schedule_data(rrule, show) - response = admin_api_client.post(url(show=show), data=data, format="json") + response = admin_api_client.post(url(), data=data, format="json") assert response.status_code == 201 assert TimeSlot.objects.all().count() == 52 or 53 @@ -97,9 +95,9 @@ def test_create_weekly_schedule(admin_api_client, show): def test_create_2weekly_schedule(admin_api_client, show): rrule = RRuleFactory(freq=2, interval=2) - data = schedule_data(rrule) + data = schedule_data(rrule, show) - response = admin_api_client.post(url(show=show), data=data, format="json") + response = admin_api_client.post(url(), data=data, format="json") assert response.status_code == 201 assert TimeSlot.objects.all().count() == 26 or 27 @@ -109,9 +107,9 @@ def test_create_2weekly_schedule(admin_api_client, show): def test_create_4weekly_schedule(admin_api_client, show): rrule = RRuleFactory(freq=2, interval=4) - data = schedule_data(rrule) + data = schedule_data(rrule, show) - response = admin_api_client.post(url(show=show), data=data, format="json") + response = admin_api_client.post(url(), data=data, format="json") assert response.status_code == 201 assert TimeSlot.objects.all().count() == 13 or 14 @@ -121,9 +119,9 @@ def test_create_4weekly_schedule(admin_api_client, show): def test_create_monthly_schedule(admin_api_client, show): rrule = RRuleFactory(freq=1) - data = schedule_data(rrule) + data = schedule_data(rrule, show) - response = admin_api_client.post(url(show=show), data=data, format="json") + response = admin_api_client.post(url(), data=data, format="json") assert response.status_code == 201 assert TimeSlot.objects.all().count() == 12 or 13 @@ -133,9 +131,9 @@ def test_create_monthly_schedule(admin_api_client, show): def test_create_2monthly_schedule(admin_api_client, show): rrule = RRuleFactory(freq=1, interval=2) - data = schedule_data(rrule) + data = schedule_data(rrule, show) - response = admin_api_client.post(url(show=show), data=data, format="json") + response = admin_api_client.post(url(), data=data, format="json") assert response.status_code == 201 assert TimeSlot.objects.all().count() == 6 or 7 @@ -145,9 +143,9 @@ def test_create_2monthly_schedule(admin_api_client, show): def test_create_3monthly_schedule(admin_api_client, show): rrule = RRuleFactory(freq=1, interval=3) - data = schedule_data(rrule) + data = schedule_data(rrule, show) - response = admin_api_client.post(url(show=show), data=data, format="json") + response = admin_api_client.post(url(), data=data, format="json") assert response.status_code == 201 assert TimeSlot.objects.all().count() == 4 or 5 @@ -157,9 +155,9 @@ def test_create_3monthly_schedule(admin_api_client, show): def test_create_4monthly_schedule(admin_api_client, show): rrule = RRuleFactory(freq=1, interval=4) - data = schedule_data(rrule) + data = schedule_data(rrule, show) - response = admin_api_client.post(url(show=show), data=data, format="json") + response = admin_api_client.post(url(), data=data, format="json") assert response.status_code == 201 assert TimeSlot.objects.all().count() == 3 or 4 @@ -168,9 +166,9 @@ def test_create_4monthly_schedule(admin_api_client, show): def test_create_schedule_forbidden_for_common_user(common_api_client1, once_rrule, show): - data = schedule_data(once_rrule) + data = schedule_data(once_rrule, show) - response = common_api_client1.post(url(show=show), data=data, format="json") + response = common_api_client1.post(url(), data=data, format="json") assert response.status_code == 403 @@ -191,7 +189,7 @@ def test_list_schedules(api_client, once_rrule, show): SCHEDULES = 3 ScheduleFactory.create_batch(size=SCHEDULES, show=show, rrule=once_rrule) - response = api_client.get(url(show=show)) + response = api_client.get(url()) assert response.status_code == 200 assert len(response.data) == 3 diff --git a/program/tests/test_timeslots.py b/program/tests/test_timeslots.py index 51489899ac48b4f1ad71ae35b1c3752e9575be73..3390da894ec3ff4b77b76246f0193f35532f4512 100644 --- a/program/tests/test_timeslots.py +++ b/program/tests/test_timeslots.py @@ -3,14 +3,8 @@ import pytest pytestmark = pytest.mark.django_db -def url(show=None, schedule=None, timeslot=None) -> str: - if show and schedule and timeslot: - return f"/api/v1/shows/{show.id}/schedules/{schedule.id}/timeslots/{timeslot.id}/" - elif show and schedule: - return f"/api/v1/shows/{show.id}/schedules/{schedule.id}/timeslots/" - elif show: - return f"/api/v1/shows/{show.id}/schedules/" - elif timeslot: +def url(timeslot=None) -> str: + if timeslot: return f"/api/v1/timeslots/{timeslot.id}/" else: return "/api/v1/timeslots/"