Private
Public Access
1
0

some more tests

This commit is contained in:
Sander Roosendaal
2019-01-04 21:48:13 +01:00
parent c85bc53632
commit 0d4c6231a7
6 changed files with 86 additions and 4 deletions

View File

@@ -125,6 +125,23 @@ def mocked_read_df_cols_sql(ids, columns, convertnewtons=True):
return df, extracols return df, extracols
def mocked_stravaexport(f2,workoutname,stravatoken,description='',
activity_type='Rowing'):
print "this is mocked strava export"
return 1,'success'
def StravaActivity():
def wait(*args, **kwargs):
return 1
class MockStravalibClient():
def upload_activity(*args, **kwargs):
return StravaActivity()
def update_activity(*args, **kwargs):
return StravaActivity()
class mocked_rowingdata(rowingdata): class mocked_rowingdata(rowingdata):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(mocked_rowingdata).__init__(*args, **kwargs) super(mocked_rowingdata).__init__(*args, **kwargs)
@@ -271,6 +288,7 @@ def mocked_requests(*args, **kwargs):
return MockResponse(json_data,200) return MockResponse(json_data,200)
if not args: if not args:
return MockSession() return MockSession()

View File

@@ -6,7 +6,7 @@ pytestmark = pytest.mark.django_db
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
import re import re
from nose_parameterized import parameterized from nose_parameterized import parameterized
from django.test import TestCase, Client,override_settings from django.test import TestCase, Client,override_settings, modify_settings
from django.core.management import call_command from django.core.management import call_command
from django.utils.six import StringIO from django.utils.six import StringIO
from django.test.client import RequestFactory from django.test.client import RequestFactory
@@ -36,6 +36,8 @@ import rowers.c2stuff as c2stuff
import json import json
import numpy as np import numpy as np
import rowers
from rowers import urls from rowers import urls
from rowers.views import ( from rowers.views import (
error500_view,error404_view,error400_view,error403_view error500_view,error404_view,error400_view,error403_view
@@ -278,9 +280,58 @@ class StravaObjects(DjangoTestCase):
) )
self.r.stravatoken = '12' self.r.stravatoken = '12'
self.r.stravarefreshtoken = '123'
self.r.save() self.r.save()
self.c.login(username='john',password='koeinsloot') self.c.login(username='john',password='koeinsloot')
self.nu = datetime.datetime.now()
filename = 'rowers/tests/testdata/testdata.csv'
rr = rrower(hrmax=self.r.max,hrut2=self.r.ut2,
hrut1=self.r.ut1,hrat=self.r.at,
hrtr=self.r.tr,hran=self.r.an,ftp=self.r.ftp)
row = rdata(filename,rower=rr)
totaldist = row.df['cum_dist'].max()
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
hours = int(totaltime/3600.)
minutes = int((totaltime - 3600.*hours)/60.)
seconds = int(totaltime - 3600.*hours - 60.*minutes)
tenths = int(10*(totaltime - 3600.*hours - 60.*minutes - seconds))
duration = "%s:%s:%s.%s" % (hours,minutes,seconds,tenths)
workoutdate = row.rowdatetime.strftime('%Y-%m-%d')
workoutstarttime = row.rowdatetime.strftime('%H:%M:%S')
self.w = Workout.objects.create(
name='testworkout',workouttype='water',
user=self.r,date=self.nu.strftime('%Y-%m-%d'),
starttime=workoutstarttime,
startdatetime=row.rowdatetime,
duration=duration,distance=totaldist,
csvfilename=filename
)
# @patch('rowers.stravastuff.requests.post', side_effect=mocked_requests)
# @patch('rowers.views.stravastuff.handle_stravaexport')
#@patch('rowers.dataprep.getsmallrowdata_db')
#def test_strava_upload(self, mock_post,MockStravalibClient,
# mocked_getsmallrowdata_db):
# def test_strava_upload(self,mock_post, mocked_stravaexport):
# response = self.c.get('/rowers/workout/1/stravauploadw/')
# self.assertRedirects(response,
# expected_url = '/rowers/workout/1/edit/',
# status_code=302,target_status_code=200)
# self.assertEqual(response.url, '/rowers/workout/1/edit/')
# self.assertEqual(response.status_code, 302)
@patch('rowers.stravastuff.requests.post', side_effect=mocked_requests) @patch('rowers.stravastuff.requests.post', side_effect=mocked_requests)
def test_strava_list(self, mock_get): def test_strava_list(self, mock_get):
@@ -289,16 +340,28 @@ class StravaObjects(DjangoTestCase):
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@patch('rowers.utils.requests.get', side_effect=mocked_requests) @patch('rowers.utils.requests.get', side_effect=mocked_requests)
def test_strava_import(self, mock_get): @patch('rowers.dataprep.getsmallrowdata_db')
def test_strava_import(self, mock_get,
mocked_getsmallrowdata_db):
response = self.c.get('/rowers/workout/stravaimport/12',follow=True) response = self.c.get('/rowers/workout/stravaimport/12',follow=True)
self.assertRedirects(response, self.assertRedirects(response,
expected_url='/rowers/workout/1/edit/', expected_url='/rowers/workout/2/edit/',
status_code=301,target_status_code=200) status_code=301,target_status_code=200)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
@patch('rowers.stravastuff.requests.post', side_effect=mocked_requests)
def test_strava_callback(self, mock_post):
response = self.c.get('/stravacall_back?code=absdef23',follow=True)
self.assertEqual(response.status_code, 200)
@patch('rowers.stravastuff.requests.post', side_effect=mocked_requests)
def test_strava_token_refresh(self, mock_post):
result = rowers.stravastuff.rower_strava_token_refresh(self.u)
self.assertEqual(result,"987654321234567898765432123456789")
#@pytest.mark.django_db #@pytest.mark.django_db

Binary file not shown.

BIN
rowers/tests/testdata/testdata.tcx.gz vendored Normal file

Binary file not shown.

View File

@@ -2252,7 +2252,7 @@ def workout_strava_upload_view(request,id=0):
try: try:
thetoken = strava_open(request.user) thetoken = strava_open(request.user)
except NoTokenError: except NoTokenError:
return HttpResponseRedirect("/rowers/me/stravaauthorize") return HttpResponseRedirect("/rowers/me/stravaauthorize/")
if (r.stravatoken == '') or (r.stravatoken is None): if (r.stravatoken == '') or (r.stravatoken is None):
s = "Token doesn't exist. Need to authorize" s = "Token doesn't exist. Need to authorize"

View File

@@ -96,3 +96,4 @@ EMAIL_USE_TLS = CFG['email_use_tls']
DEFAULT_FROM_EMAIL = 'info@rowsandall.com' DEFAULT_FROM_EMAIL = 'info@rowsandall.com'
SETTINGS_NAME = 'rowsandall_app.settings_dev' SETTINGS_NAME = 'rowsandall_app.settings_dev'