Skip to content

Commit 1d75f0e

Browse files
committed
DBC22-6238: added test cases for timelapse endpoint
1 parent 680f43c commit 1d75f0e

2 files changed

Lines changed: 44 additions & 1 deletion

File tree

src/backend/apps/webcam/tests/test_webcam_api.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,46 @@ def test_cameras_list_filtering(self, mock_requests_get):
110110
webcams_list = response.json().get('webcams', [])
111111
webcams_list_length = len(webcams_list)
112112
assert webcams_list_length == 0
113+
114+
@patch('apps.webcam.views.get_image_list')
115+
def test_timelapse_filtering(self, mock_get_image_list):
116+
pk = 67
117+
url = f"/api/webcams/{pk}/timelapse/"
118+
119+
mock_timestamps = [
120+
"20260419140000", # 07:00 Vancouver (UTC-7)
121+
"20260419150000", # 08:00 Vancouver
122+
"20260419160000", # 09:00 Vancouver
123+
"20260419170000", # 10:00 Vancouver
124+
"20260419180000", # 11:00 Vancouver
125+
"20260419230000", # 16:00 Vancouver
126+
"20260420000000", # 17:00 Vancouver
127+
"20260420010000", # 18:00 Vancouver
128+
"20260420020000", # 19:00 Vancouver (outside range)
129+
]
130+
131+
# No filtering - returns all images
132+
mock_get_image_list.return_value = mock_timestamps
133+
response = self.client.get(url)
134+
assert response.status_code == 200
135+
result = response.json()
136+
assert len(result) == len(mock_timestamps)
137+
138+
# Filter by date and time in Vancouver timezone
139+
mock_get_image_list.return_value = mock_timestamps
140+
response = self.client.get(url, {
141+
'from': '2026-04-19',
142+
'to': '2026-04-19',
143+
'time_from': '08:00',
144+
'time_to': '18:00',
145+
'timezone': 'America/Vancouver',
146+
})
147+
assert response.status_code == 200
148+
result = response.json()
149+
# 08:00-18:00 Vancouver = 15:00-01:00 UTC
150+
# Expected: 20260419150000 through 20260420010000 (inclusive)
151+
assert len(result) == 7
152+
assert "20260419140000" not in result # 07:00 Vancouver - before range
153+
assert "20260419150000" in result # 08:00 Vancouver - start of range
154+
assert "20260420010000" in result # 18:00 Vancouver - end of range
155+
assert "20260420020000" not in result # 19:00 Vancouver - after

src/backend/apps/webcam/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ def timelapse_admin(self, request, pk=None):
341341
user = request.user
342342
if not user.is_authenticated or not user.is_staff:
343343
return Response({"detail": "Admin access required."}, status=status.HTTP_403_FORBIDDEN)
344-
return self._timelapse_impl(pk)
344+
return self._timelapse_impl(request, pk)
345345

346346
@action(
347347
detail=True,

0 commit comments

Comments
 (0)