33import pytest
44from django .core .cache import cache
55from httpx import HTTPStatusError
6- from apps .feed .client import FeedClient , WEBCAM , OPEN511
6+ from apps .feed .client import FeedClient , OPEN511
77from apps .feed .constants import REST_STOP
88from apps .feed .serializers import WebcamAPISerializer , EventAPISerializer
99from apps .shared .tests import BaseTest
1010from django .conf import settings
11+ from apps .webcam .models import CameraSource
12+ from pathlib import Path
13+ import json
1114
1215logging .getLogger ().setLevel (logging .CRITICAL )
1316
@@ -27,18 +30,6 @@ def setUp(self):
2730 super ().setUp ()
2831 self .client = FeedClient ()
2932
30- def test_get_endpoint (self ):
31- endpoint = self .client ._get_endpoint (WEBCAM , 'webcams/123' )
32- self .assertIn ('webcams/123' , endpoint )
33-
34- def test_get_auth_headers_with_key (self ):
35- self .client .resource_map [WEBCAM ]['auth_key' ] = 'test_api_key'
36- headers = self .client ._get_auth_headers (WEBCAM )
37- self .assertEqual (headers , {'apiKey' : 'test_api_key' })
38-
39- def test_get_auth_headers_without_key (self ):
40- headers = self .client ._get_auth_headers (WEBCAM )
41- self .assertEqual (headers , {})
4233
4334 def test_get_response_data_or_raise_success (self ):
4435 mock_response = create_mock_response (200 , {'key' : 'value' })
@@ -174,49 +165,6 @@ def setUp(self):
174165 }
175166 }
176167
177- @patch ('apps.feed.client.httpx.get' )
178- @patch ('apps.feed.serializers.WebcamFeedSerializer' )
179- def test_get_single_feed (self , mock_serializer_cls , mock_get ):
180- mock_response = create_mock_response (200 , self .valid_webcam_data )
181- mock_get .return_value = mock_response
182-
183- mock_serializer = MagicMock ()
184- mock_serializer .is_valid = MagicMock (return_value = True )
185- mock_serializer .validated_data = {'id' : 123 }
186- mock_serializer_cls .return_value = mock_serializer
187-
188- from apps .feed .serializers import WebcamFeedSerializer
189- result = self .client .get_single_feed ('123' , WEBCAM , 'webcams/' , WebcamFeedSerializer )
190- self .assertIsNotNone (result )
191-
192- @patch ('apps.feed.client.httpx.get' )
193- @patch ('apps.feed.serializers.WebcamFeedSerializer' )
194- def test_get_single_feed_returns_list (self , mock_serializer_cls , mock_get ):
195- mock_response = create_mock_response (200 , [self .valid_webcam_data ])
196- mock_get .return_value = mock_response
197-
198- mock_serializer = MagicMock ()
199- mock_serializer .is_valid = MagicMock (return_value = True )
200- mock_serializer .validated_data = {'id' : 123 }
201- mock_serializer_cls .return_value = mock_serializer
202-
203- from apps .feed .serializers import WebcamFeedSerializer
204- result = self .client .get_single_feed ('123' , WEBCAM , 'webcams/' , WebcamFeedSerializer )
205- self .assertIsNotNone (result )
206-
207- @patch ('apps.feed.client.httpx.get' )
208- @patch ('apps.feed.client.WebcamFeedSerializer' )
209- def test_get_single_feed_as_serializer (self , mock_serializer_cls , mock_get ):
210- mock_response = create_mock_response (200 , {'id' : '123' , 'name' : 'Test' })
211- mock_get .return_value = mock_response
212-
213- mock_serializer = MagicMock ()
214- mock_serializer_cls .return_value = mock_serializer
215- mock_serializer .is_valid = MagicMock ()
216- mock_serializer .save = MagicMock ()
217-
218- result = self .client .get_single_feed ('123' , WEBCAM , 'webcams/' , mock_serializer_cls , as_serializer = True )
219- self .assertEqual (result , mock_serializer )
220168
221169
222170class TestFeedClientGetListFeed (BaseTest ):
@@ -226,13 +174,6 @@ def setUp(self):
226174 super ().setUp ()
227175 self .client = FeedClient ()
228176
229- @patch ('apps.feed.client.httpx.get' )
230- def test_get_list_feed_success (self , mock_get ):
231- mock_response = create_mock_response (200 , {'webcams' : []})
232- mock_get .return_value = mock_response
233-
234- result = self .client .get_list_feed (WEBCAM , 'webcams' , WebcamAPISerializer )
235- self .assertIn ('webcams' , result )
236177
237178 @patch ('apps.feed.client.httpx.get' )
238179 def test_get_list_feed_with_params (self , mock_get ):
@@ -245,28 +186,47 @@ def test_get_list_feed_with_params(self, mock_get):
245186
246187class TestFeedClientWebcam (BaseTest ):
247188 """Test webcam feed methods."""
189+
190+ def populate_webcam_data (self , mock_data = None ):
191+ for cam in mock_data ['webcams' ]:
192+ CameraSource .objects .using ('mssql' ).create (
193+ id = cam ['id' ],
194+ cam_internetname = cam ['cam_internetname' ],
195+ cam_internetcaption = cam ['cam_internetcaption' ],
196+ cam_internetcredit = cam ['cam_internetcredit' ],
197+ cam_internetdbc_mark = cam ['cam_internetdbc_mark' ],
198+ cam_locationsregion = cam ['cam_locationsregion' ],
199+ cam_locationshighway = cam ['cam_locationshighway' ],
200+ cam_controldisabled = cam ['cam_controldisabled' ],
201+ cam_controldisappear = cam ['cam_controldisappear' ],
202+ isnew = cam ['isnew' ],
203+ cam_maintenanceis_on_demand = cam ['cam_maintenanceis_on_demand' ],
204+ seq = cam ['seq' ]
205+ )
248206
249207 def setUp (self ):
250208 super ().setUp ()
251209 self .client = FeedClient ()
252210
253- @patch ('apps.feed.client.httpx.get' )
254- def test_get_webcam_list (self , mock_get ):
255- mock_response = create_mock_response (200 , {'webcams' : []})
256- mock_get .return_value = mock_response
257-
258- result = self .client .get_webcam_list ()
259- self .assertIn ('webcams' , result )
260-
261- @patch ('apps.feed.client.FeedClient.get_single_feed' )
262- def test_get_webcam (self , mock_get_single ):
263- mock_get_single .return_value = {'id' : 123 , 'name' : 'Test' }
211+ def test_get_webcam_list (self ):
212+ fake_cam = MagicMock ()
213+ fake_cam .cam_internetname = "TestWebCam New"
214+ with patch ("apps.webcam.models.CameraSource.objects.using" ) as mock_using :
215+ mock_qs = MagicMock ()
216+ mock_qs .all .return_value = [fake_cam ]
217+ mock_using .return_value = mock_qs
218+ result = self .client .get_webcam_list ()
219+ self .assertEqual (len (result ), 1 )
220+ self .assertEqual (result [0 ].cam_internetname , "TestWebCam New" )
221+
222+ def test_get_webcam_list_exception (self ):
223+ with patch ("apps.webcam.models.CameraSource.objects.using" ) as mock_using :
224+ mock_using .side_effect = Exception ("DB error" )
264225
265- class MockWebcam :
266- id = 123
226+ result = self .client .get_webcam_list ()
267227
268- result = self . client . get_webcam ( MockWebcam ())
269- self . assertEqual ( result , { 'id' : 123 , 'name' : 'Test' })
228+ assert result == []
229+
270230
271231
272232class TestFeedClientEvent (BaseTest ):
@@ -324,15 +284,6 @@ def setUp(self):
324284 super ().setUp ()
325285 self .client = FeedClient ()
326286
327- @patch ('apps.feed.client.httpx.get' )
328- def test_get_list_feed_empty_response (self , mock_get ):
329- from apps .feed .serializers import WebcamAPISerializer
330-
331- mock_response = create_mock_response (200 , {'webcams' : []})
332- mock_get .return_value = mock_response
333-
334- result = self .client .get_list_feed (WEBCAM , 'webcams' , WebcamAPISerializer )
335- self .assertIn ('webcams' , result )
336287
337288
338289class TestFeedClientFerry (BaseTest ):
0 commit comments