From 5e1169fd2c5ea1ceff76928681b5449b6681e042 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 13 Jun 2024 11:07:29 +0200 Subject: [PATCH] change osm to arcgis --- rowers/courses.py | 7 +++- rowers/tests/mocks.py | 51 +++++++++++++++++++++++++- rowers/tests/test_aavirtualevents.py | 40 +++++++++++++------- rowers/tests/test_permissions2.py | 20 +++++----- rowers/tests/test_races.py | 33 +++++++++++------ rowers/tests/test_urls.py | 4 +- rowers/tests/testdata/testdata.tcx.gz | Bin 4000 -> 4000 bytes rowers/views/apiviews.py | 1 - 8 files changed, 118 insertions(+), 38 deletions(-) diff --git a/rowers/courses.py b/rowers/courses.py index fb2f60c4..c685450c 100644 --- a/rowers/courses.py +++ b/rowers/courses.py @@ -39,7 +39,10 @@ from rowers.models import VirtualRace def howfaris(lat_lon, course): coords = course.coord - distance = geo_distance(lat_lon[0], lat_lon[1], coords[0], coords[1])[0] + try: + distance = geo_distance(lat_lon[0], lat_lon[1], coords[0], coords[1])[0] + except TypeError: + return 10000000 return distance @@ -398,7 +401,7 @@ def createcourse( if i == 0 and j == 0: latitude = point['latitude'] longitude = point['longitude'] - g = geocoder.osm([latitude, longitude], method='reverse') + g = geocoder.arcgis([latitude, longitude], method='reverse') if g.ok: country = g.json['country'] else: # pragma: no cover diff --git a/rowers/tests/mocks.py b/rowers/tests/mocks.py index cd73dd7a..0942905b 100644 --- a/rowers/tests/mocks.py +++ b/rowers/tests/mocks.py @@ -99,6 +99,14 @@ def mocked_myqueue(*args, **kwargs): # pragma: no cover def mock_c2open(*args, **kwargs): # pragma: no cover return('aap') +def mock_osm(*args, **kwargs): + return { + 'ok': True, + json: { + 'country': 'Atlantis', + } + } + def mocked_session(*args, **kwargs): class MockEngine: @@ -853,6 +861,41 @@ def mocked_requests(*args, **kwargs): } } + osm_json = [ + { + "place_id": 165922574, + "licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright", + "osm_type": "node", + "osm_id": 2756013867, + "lat": "52.2229364", + "lon": "6.846701", + "category": "place", + "type": "house", + "place_rank": 30, + "importance": 0.000009999999999954, + "addresstype": "place", + "name": "", + "display_name": "254, Ir. Schiffstraat, Havengebied, Enschede, Overijssel, Netherlands, 7547 RD, Netherlands", + "address": { + "house_number": "254", + "road": "Ir. Schiffstraat", + "industrial": "Havengebied", + "city": "Enschede", + "state": "Overijssel", + "ISO3166-2-lvl4": "NL-OV", + "country": "Netherlands", + "postcode": "7547 RD", + "country_code": "nl" + }, + "boundingbox": [ + "52.2228864", + "52.2229864", + "6.8466510", + "6.8467510" + ] + } + ] + with open('rowers/tests/testdata/stravaworkoutlist.txt') as f: stravaworkoutlist = json.load(f) @@ -1061,7 +1104,7 @@ def mocked_requests(*args, **kwargs): if 'rojabo' in args[0]: return MockResponse(rojabodata, 200) - + osmtester = re.compile(r'.*?nominatim.openstreetmap.org') polartester = re.compile(r'.*?polaraccesslink\.com') polarremotetester = re.compile(r'.*?polarremote\.com') c2tester = re.compile(r'.*?log\.concept2\.com') @@ -1167,6 +1210,12 @@ def mocked_requests(*args, **kwargs): garmintrainingscheduleregex = r'.*?garmin\.com\/training-api\/schedule' garmintrainingscheduletester = re.compile(garmintrainingscheduleregex) + if osmtester.match(args[0]): + return MockResponse(osm_json, 200) + + if args[0] == '1.1.1.1': + return MockResponse(osm_json, 200) + if garmintester.match(args[0]): if garmindownloadtester.match(args[0]): # pragma: no cover return MockStreamResponse('rowers/tests/testdata/3x250m.fit',200) diff --git a/rowers/tests/test_aavirtualevents.py b/rowers/tests/test_aavirtualevents.py index e58e5861..92e978fd 100644 --- a/rowers/tests/test_aavirtualevents.py +++ b/rowers/tests/test_aavirtualevents.py @@ -342,7 +342,9 @@ class VirtualEventViewTest(MyTestCase): #Scenarios # races page - def test_races_view(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + @patch('rowers.courses.geocoder.osm', side_effect=mock_osm) + def test_races_view(self, mock_get, mock_osm): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -384,7 +386,8 @@ class VirtualEventViewTest(MyTestCase): # set up new OTE race - def test_new_indoorrace(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_new_indoorrace(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -467,7 +470,8 @@ class VirtualEventViewTest(MyTestCase): # set up new OTE race - def test_edit_indoorrace(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_edit_indoorrace(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -514,7 +518,8 @@ class VirtualEventViewTest(MyTestCase): # set up new otw race # set up new OTE race - def test_new_race(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_new_race(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -551,7 +556,8 @@ class VirtualEventViewTest(MyTestCase): expected_url = reverse('virtualevents_view'), status_code=302,target_status_code=200) - def test_edit_race(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_edit_race(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -590,7 +596,8 @@ class VirtualEventViewTest(MyTestCase): status_code=302,target_status_code=200) # view - def test_race_view(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_race_view(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -614,7 +621,8 @@ class VirtualEventViewTest(MyTestCase): # register # withdraw - def test_register_race_view(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_register_race_view(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -691,7 +699,8 @@ class VirtualEventViewTest(MyTestCase): # add boat (OTW) - def test_register_otwrace_view(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_register_otwrace_view(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -760,7 +769,8 @@ class VirtualEventViewTest(MyTestCase): # submit result (OTE) - def test_ote_submit(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_ote_submit(self, mock_get): login = self.c.login(username=self.upiet.username, password=self.passwordpiet) self.assertTrue(login) @@ -793,7 +803,8 @@ class VirtualEventViewTest(MyTestCase): self.assertEqual(response.status_code,200) # submit result (OTE) - def test_ote_submitfalse(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_ote_submitfalse(self, mock_get): login = self.c.login(username=self.upiet.username, password=self.passwordpiet) self.assertTrue(login) @@ -820,7 +831,8 @@ class VirtualEventViewTest(MyTestCase): self.assertTrue(not therecord.coursecompleted) # submit result (OTW) - def test_otw_submit(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_otw_submit(self, mock_get): login = self.c.login(username=self.upiet.username, password=self.passwordpiet) self.assertTrue(login) @@ -842,7 +854,8 @@ class VirtualEventViewTest(MyTestCase): # course view # submit result (OTW) - def test_otw_courses(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_otw_courses(self, mock_get): login = self.c.login(username=self.upiet.username, password=self.passwordpiet) self.assertTrue(login) @@ -861,7 +874,8 @@ class VirtualEventViewTest(MyTestCase): response = self.c.get(url) self.assertEqual(response.status_code,200) - def test_otw_courses_edit(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_otw_courses_edit(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) diff --git a/rowers/tests/test_permissions2.py b/rowers/tests/test_permissions2.py index 074f4e7f..1675c7df 100644 --- a/rowers/tests/test_permissions2.py +++ b/rowers/tests/test_permissions2.py @@ -222,16 +222,18 @@ class PermissionsViewTests(TestCase): @patch('requests.get',side_effect=mocked_requests) @patch('requests.post',side_effect=mocked_requests) @patch('rowers.dataprep.get_video_data',side_effect=mocked_get_video_data) + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) def test_permissions_anonymous( - self,view,permissions, - mock_Session, - mock_c2open, - mocked_sqlalchemy, - mocked_read_df_sql, - mocked_read_data, - mock_get, - mock_post, - mocked_get_video_data, + self,view,permissions, + mock_Session, + mock_c2open, + mocked_sqlalchemy, + mocked_read_df_sql, + mocked_read_data, + mock_get, + mock_post, + mocked_get_video_data, + mock_get2, ): if permissions['anonymous'] and not permissions['is_staff'] and permissions['dotest']: diff --git a/rowers/tests/test_races.py b/rowers/tests/test_races.py index a8d3ecbb..8e7ac627 100644 --- a/rowers/tests/test_races.py +++ b/rowers/tests/test_races.py @@ -258,7 +258,8 @@ class ChallengesTest(TestCase): tcourses = getnearestcourses(lat_lon,courses) self.assertEqual(len(tcourses),1) - def test_courses_view(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_courses_view(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -274,7 +275,8 @@ class ChallengesTest(TestCase): response = self.c.get(url) self.assertEqual(response.status_code,200) - def test_coursemap_view(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_coursemap_view(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -282,7 +284,8 @@ class ChallengesTest(TestCase): response = self.c.get(url) self.assertEqual(response.status_code,200) - def test_coursemapcompare_view(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_coursemapcompare_view(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -290,7 +293,8 @@ class ChallengesTest(TestCase): response = self.c.get(url) self.assertEqual(response.status_code,200) - def test_coursecompare_view(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_coursecompare_view(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -300,7 +304,8 @@ class ChallengesTest(TestCase): - def test_course_create_edit_delete(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_course_create_edit_delete(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -464,7 +469,8 @@ class ChallengesTest(TestCase): self.assertEqual(response.status_code, 200) - def test_fastestrace_view(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_fastestrace_view(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -530,7 +536,8 @@ class ChallengesTest(TestCase): self.assertEqual(response.status_code, 200) - def test_virtualevents_view(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_virtualevents_view(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -584,8 +591,9 @@ class ChallengesTest(TestCase): response = self.c.post(url) self.assertEqual(response.status_code,200) + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) @patch('rowers.views.racesviews.myqueue') - def test_course_view(self, mocked_myqueue): + def test_course_view(self, mock_get, mocked_myqueue): login = self.c.login(username=self.u, password=self.password) self.assertTrue(login) @@ -607,8 +615,9 @@ class ChallengesTest(TestCase): self.assertEqual(response.status_code, 200) + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) @patch('rowers.views.racesviews.myqueue') - def test_virtualevent_view(self,mocked_myqueue): + def test_virtualevent_view(self,mock_get, mocked_myqueue): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -1007,7 +1016,8 @@ class IndoorChallengesTest(TestCase): pass - def test_virtualevents_view(self): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) + def test_virtualevents_view(self, mock_get): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -1171,8 +1181,9 @@ class IndoorChallengesTest(TestCase): + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) @patch('rowers.views.racesviews.myqueue') - def test_virtualevent_view(self,mocked_myqueue): + def test_virtualevent_view(self,mock_get, mocked_myqueue): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) diff --git a/rowers/tests/test_urls.py b/rowers/tests/test_urls.py index 4f2d6d9c..829f7864 100644 --- a/rowers/tests/test_urls.py +++ b/rowers/tests/test_urls.py @@ -198,6 +198,7 @@ class URLTests(TestCase): @patch('requests.post',side_effect=mocked_requests) @patch('rowers.dataprep.get_video_data',side_effect=mocked_get_video_data) @patch('rowers.views.statements.sendmail',side_effect=mocked_sendmail) + @patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests) def test_url_generator(self,url,expected, mocked_sqlalchemy, mocked_read_df_sql, @@ -205,7 +206,8 @@ class URLTests(TestCase): mock_get, mock_post, mocked_get_video_data, - mocked_sendmail): + mocked_sendmail, + mock_get2): if url not in tested: login = self.c.login(username='john',password='koeinsloot') diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index 3c0a65ca9ac545281fb7f0d3324d570c2c271e85..8058cd3557d950a0012ee8831c8091f80bed9d17 100644 GIT binary patch literal 4000 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 GfB^t@(m}2O diff --git a/rowers/views/apiviews.py b/rowers/views/apiviews.py index 1937d9fd..bba37957 100644 --- a/rowers/views/apiviews.py +++ b/rowers/views/apiviews.py @@ -517,7 +517,6 @@ def strokedatajson_v3(request): } """ - print("V3") if request.method != 'POST': return HttpResponseNotAllowed("Method not supported") # pragma: no cover