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 3c0a65ca..8058cd35 100644 Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ 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