Private
Public Access
1
0

c2, strava done, almost done st

This commit is contained in:
Sander Roosendaal
2018-07-03 17:02:45 +02:00
parent 3421d1a685
commit ce53c29fee
7 changed files with 242 additions and 45 deletions

View File

@@ -60,7 +60,28 @@ def mocked_requests(*args, **kwargs):
c2strokedata = json.load(infile)
c2workoutlist = json.load(open('rowers/testdata/c2workoutlist.txt'))
c2uploadjson = {
"data": {
"id": 339,
"user_id": 1,
"date": "2015-08-05 13:15:41",
"timezone": "Europe/London",
"date_utc": "2015-08-05 12:15:41",
"distance": 5649,
"type": "rower",
"time": 8649,
"time_formatted": "14:24.9",
"workout_type": "JustRow",
"source": "ErgData",
"weight_class": "H",
"verified": True,
"ranked": False
}
}
stravaworkoutlist = json.load(open('rowers/testdata/stravaworkoutlist.txt'))
sporttracksworkoutlist = json.load(open('rowers/testdata/sporttracksworkouts.txt'))
stravasummaryjson = json.load(open('rowers/testdata/stravaworkoutsummary.txt','r'))
stravatimejson = json.load(open('rowers/testdata/stravatimetestdata.txt','r'))
@@ -107,10 +128,14 @@ def mocked_requests(*args, **kwargs):
c2tester = re.compile('.*?log\.concept2\.com')
stravatester = re.compile('.*?strava\.com')
sttester = re.compile('.*?sporttracks\.mobi')
c2importregex = '.*?concept2.com\/api\/users\/me\/results\/\d+'
c2importtester = re.compile(c2importregex)
c2uploadregex = '.*?concept2.com\/api\/users\/\d+\/results$'
c2uploadtester = re.compile(c2uploadregex)
c2strokesregex = '.*?concept2.com\/api\/users\/me\/results\/\d+\/strokes'
c2strokestester = re.compile(c2strokesregex)
@@ -125,6 +150,31 @@ def mocked_requests(*args, **kwargs):
stravasummaryregex = '.*?strava\.com\/api\/v3\/activities\/\d+$'
stravasummarytester = re.compile(stravasummaryregex)
stuploadregex = '.*?sporttracks\.mobi\/api\/v2\/fitnessActivities.json$'
stuploadtester = re.compile(stuploadregex)
stworkoutlistregex = '.*?sporttracks\.mobi\/api\/v2\/fitnessActivities$'
stworkoutlisttester = re.compile(stworkoutlistregex)
if sttester.match(args[0]):
if 'oauth2/token' in args[0]:
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
if stuploadtester.match(args[0]):
json_data = {
"uris": [
"https://api.sporttracks.mobi/api/v2/fitnessActivity/123456"
]
}
return MockResponse(json_data, 200)
if stworkoutlisttester.match(args[0]):
return MockResponse(sporttracksworkoutlist,200)
if stravatester.match(args[0]):
if stravaworkoutlisttester.match(args[0]):
@@ -137,11 +187,13 @@ def mocked_requests(*args, **kwargs):
return MockResponse(stravasummaryjson,200)
if c2tester.match(args[0]):
if c2uploadtester.match(args[0]):
return MockResponse(c2uploadjson,201)
if c2strokestester.match(args[0]):
return MockResponse(c2strokedata,200)
elif c2importtester.match(args[0]):
return MockResponse(c2workoutdata,200)
elif c2workoutlisttester(args[0]):
elif c2workoutlisttester.match(args[0]):
return MockResponse(c2workoutlist,200)
elif 'access_token' in args[0]:
json_data = {
@@ -185,10 +237,45 @@ class C2Objects(DjangoTestCase):
)
self.r.c2token = '12'
self.r.c2refreshtoken = 'ab'
self.r.tokenexpirydate = datetime.datetime.now()+datetime.timedelta(days=1)
self.r.save()
self.c.login(username='john',password='koeinsloot')
self.nu = datetime.datetime.now()
filename = 'rowers/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='On-water',
user=self.r,date=self.nu.strftime('%Y-%m-%d'),
starttime=workoutstarttime,
startdatetime=row.rowdatetime,
duration=duration,distance=totaldist,
csvfilename=filename
)
@patch('rowers.c2stuff.requests.Session', side_effect=mocked_requests)
def test_c2_callback(self, mock_post):
response = self.c.get('/call_back?code=dsdoij232s',follow=True)
@@ -203,7 +290,18 @@ class C2Objects(DjangoTestCase):
self.assertEqual(response.status_code, 200)
@patch('rowers.c2stuff.requests.post', side_effect=mocked_requests)
@patch('rowers.c2stuff.requests.get', side_effect=mocked_requests)
def test_c2_upload(self, mock_get, mock_post):
response = self.c.get('/rowers/workout/1/c2uploadw/')
self.assertRedirects(response,
expected_url = '/rowers/workout/1/export',
status_code=302,target_status_code=200)
self.assertEqual(response.url, '/rowers/workout/1/export')
self.assertEqual(response.status_code, 302)
@patch('rowers.c2stuff.requests.post', side_effect=mocked_requests)
def test_c2_list(self, mock_get):
@@ -217,7 +315,7 @@ class C2Objects(DjangoTestCase):
response = self.c.get('/rowers/workout/c2import/12/',follow=True)
self.assertRedirects(response,
expected_url='/rowers/workout/1/edit',
expected_url='/rowers/workout/2/edit',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
@@ -294,21 +392,111 @@ class StravaObjects(DjangoTestCase):
class STObjects(DjangoTestCase):
def setUp(self):
self.c = Client()
self.u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
self.u.first_name = 'John'
self.u.last_name = 'Sander'
self.u.save()
self.r = Rower.objects.create(user=self.u,gdproptin=True,
gdproptindate=timezone.now()
)
self.r.sporttrackstoken = '12'
self.r.sporttracksrefreshtoken = '12'
self.r.sporttrackstokenexpirydate = datetime.datetime.now()+datetime.timedelta(days=1)
self.r.save()
self.c.login(username='john',password='koeinsloot')
self.nu = datetime.datetime.now()
filename = 'rowers/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='On-water',
user=self.r,date=self.nu.strftime('%Y-%m-%d'),
starttime=workoutstarttime,
startdatetime=row.rowdatetime,
duration=duration,distance=totaldist,
csvfilename=filename
)
@patch('rowers.sporttracksstuff.requests.post', side_effect=mocked_requests)
def test_sporttracks_callback(self, mock_post):
response = self.c.get('/sporttracks_callback?code=dsdoij232s',follow=True)
self.assertEqual(response.status_code, 200)
@patch('rowers.sporttracksstuff.requests.post', side_effect=mocked_requests)
def test_sporttracks_token_refresh(self, mock_post):
response = self.c.get('/rowers/me/sporttracksrefresh/',follow=True)
self.assertEqual(response.status_code, 200)
@patch('rowers.sporttracksstuff.requests.post', side_effect=mocked_requests)
@patch('rowers.sporttracksstuff.requests.get', side_effect=mocked_requests)
def test_sporttracks_upload(self, mock_get, mock_post):
response = self.c.get('/rowers/workout/1/sporttracksuploadw/')
self.assertRedirects(response,
expected_url = '/rowers/workout/1/export',
status_code=302,target_status_code=200)
self.assertEqual(response.url, '/rowers/workout/1/export')
self.assertEqual(response.status_code, 302)
@patch('rowers.sporttracksstuff.requests.get', side_effect=mocked_requests)
def test_sporttracks_list(self, mock_get):
response = self.c.get('/rowers/workout/sporttracksimport',follow=True)
self.assertEqual(response.status_code,200)
@patch('rowers.imports.requests.get', side_effect=mocked_requests)
def test_sporttracks_import(self, mock_get):
response = self.c.get('/rowers/workout/sporttracksimport/12/',follow=True)
self.assertRedirects(response,
expected_url='/rowers/workout/2/edit',
status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200)
def test_strokedata(self):
with open('rowers/testdata/sporttrackstestdata.txt','r') as infile:
data = json.load(infile)
from rowers.sporttracksstuff import add_workout_from_data
u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
r = Rower.objects.create(user=u,gdproptin=True,
gdproptindate=timezone.now()
)
res = add_workout_from_data(u,1,data,data)
res = add_workout_from_data(self.u,1,data,data)
def test_strokedatanohr(self):
with open('rowers/testdata/sporttrackstestnohr.txt','r') as infile:
@@ -316,16 +504,9 @@ class STObjects(DjangoTestCase):
from rowers.sporttracksstuff import add_workout_from_data
u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
r = Rower.objects.create(user=u,gdproptin=True,
gdproptindate=timezone.now()
)
res = add_workout_from_data(u,1,data,data)
res = add_workout_from_data(self.u,1,data,data)
class TestErrorPages(TestCase):