From 656492f46eb8d624fb2b0100256552dede62d68a Mon Sep 17 00:00:00 2001
From: Ernesto Rico Schmidt <ernesto@helsinki.at>
Date: Wed, 10 Apr 2024 20:49:49 -0400
Subject: [PATCH] test: add test for PATCH requests for schedules

---
 program/tests/test_schedules.py | 69 ++++++++++++++++++++++++++++++++-
 1 file changed, 68 insertions(+), 1 deletion(-)

diff --git a/program/tests/test_schedules.py b/program/tests/test_schedules.py
index bee9458a..a7185f01 100644
--- a/program/tests/test_schedules.py
+++ b/program/tests/test_schedules.py
@@ -1,4 +1,4 @@
-from datetime import datetime, timedelta
+from datetime import date, datetime, timedelta
 from typing import Any
 
 import pytest
@@ -216,3 +216,70 @@ def test_update_schedule(admin_api_client, once_schedule):
     assert response.status_code == 200
 
     assert_data(response, update)
+
+
+def test_patch_set_default_playlist_id(admin_api_client, once_schedule):
+    update = {"default_playlist_id": 42}
+
+    response = admin_api_client.patch(url(schedule=once_schedule), data=update)
+
+    assert response.status_code == 200
+    assert response.data["default_playlist_id"] == update["default_playlist_id"]
+
+
+def test_patch_clear_default_playlist_id(admin_api_client, once_schedule):
+    update = {"default_playlist_id": None}
+
+    response = admin_api_client.patch(url(schedule=once_schedule), data=update, format="json")
+
+    assert response.status_code == 200
+    assert response.data["default_playlist_id"] == update["default_playlist_id"]
+
+
+def test_patch_set_is_repetition_true(admin_api_client, once_schedule):
+    update = {"is_repetition": "true"}
+
+    response = admin_api_client.patch(url(schedule=once_schedule), data=update)
+    print(response.request.items())
+    assert response.status_code == 200
+    assert response.data["is_repetition"] is True
+
+
+def test_patch_set_is_repetition_false(admin_api_client, once_schedule):
+    update = {"is_repetition": "false"}
+
+    response = admin_api_client.patch(url(schedule=once_schedule), data=update)
+
+    assert response.status_code == 200
+    assert response.data["is_repetition"] is False
+
+
+def test_patch_last_date_delete_timeslots(admin_api_client, show_once_timeslot):
+    update = {"last_date": (date.today() - timedelta(days=1)).isoformat()}
+
+    response = admin_api_client.patch(url(schedule=show_once_timeslot.schedule), data=update)
+
+    assert response.status_code == 200
+    assert response.data["last_date"] == update["last_date"]
+    assert show_once_timeslot.schedule.timeslots.all().count() == 0
+
+
+def test_patch_last_date(admin_api_client, show_once_timeslot):
+    update = {"last_date": (date.today() + timedelta(days=1)).isoformat()}
+
+    response = admin_api_client.patch(url(schedule=show_once_timeslot.schedule), data=update)
+
+    assert response.status_code == 200
+    assert response.data["last_date"] == update["last_date"]
+    assert show_once_timeslot.schedule.timeslots.all().count() == 1
+
+
+def test_patch_last_date_bad_request(admin_api_client, once_schedule):
+    once_schedule.last_date = date.today() + timedelta(days=1)
+    once_schedule.save()
+
+    update = {"last_date": (date.today() + timedelta(days=2)).isoformat()}
+
+    response = admin_api_client.patch(url(schedule=once_schedule), data=update)
+
+    assert response.status_code == 400
-- 
GitLab