Tests for SportTracks and Strava data structures
This commit is contained in:
@@ -19,6 +19,7 @@ from minimocktest import MockTestCase
|
||||
import pandas as pd
|
||||
|
||||
import json
|
||||
import numpy as np
|
||||
|
||||
from rowers import urls
|
||||
from rowers.views import error500_view,error404_view,error400_view,error403_view
|
||||
@@ -37,12 +38,12 @@ class DjangoTestCase(TestCase, MockTestCase):
|
||||
|
||||
class C2Objects(DjangoTestCase):
|
||||
def test_strokedata(self):
|
||||
with open('c2stroketestdata.txt','r') as infile:
|
||||
with open('rowers/testdata/c2stroketestdata.txt','r') as infile:
|
||||
res = json.load(infile)
|
||||
|
||||
strokedata = pd.DataFrame.from_dict(res['data'])
|
||||
|
||||
with open('c2testdata.txt','r') as infile:
|
||||
with open('rowers/testdata/c2testdata.txt','r') as infile:
|
||||
res = json.load(infile)
|
||||
|
||||
data = res['data']
|
||||
@@ -56,8 +57,96 @@ class C2Objects(DjangoTestCase):
|
||||
|
||||
res = add_workout_from_strokedata(u,1,data,strokedata,source='c2')
|
||||
|
||||
|
||||
class StravaObjects(DjangoTestCase):
|
||||
def test_strokedata(self):
|
||||
timejson = json.load(open('rowers/testdata/stravatimetestdata.txt','r'))
|
||||
velojson = json.load(open('rowers/testdata/stravavelotestdata.txt','r'))
|
||||
distancejson = json.load(open('rowers/testdata/stravadistancetestdata.txt','r'))
|
||||
latlongjson = json.load(open('rowers/testdata/stravalatlongtestdata.txt','r'))
|
||||
hrjson = json.load(open('rowers/testdata/stravahrtestdata.txt','r'))
|
||||
spmjson = json.load(open('rowers/testdata/stravaspmtestdata.txt','r'))
|
||||
workoutsummary = json.load(open('rowers/testdata/stravasummarytestdata.txt','r'))
|
||||
workoutsummary['timezone'] = "Etc/UTC"
|
||||
startdatetime = workoutsummary['start_date']
|
||||
|
||||
|
||||
t = np.array(timejson[0]['data'])
|
||||
d = np.array(distancejson[0]['data'])
|
||||
nr_rows = len(t)
|
||||
|
||||
try:
|
||||
spm = np.array( spmjson[1]['data'])
|
||||
except IndexError:
|
||||
spm = np.zeros(nr_rows)
|
||||
|
||||
try:
|
||||
hr = np.array(hrjson[1]['data'])
|
||||
except IndexError:
|
||||
hr = np.zeros(nr_rows)
|
||||
|
||||
try:
|
||||
velo = np.array(velojson[1]['data'])
|
||||
except IndexError:
|
||||
velo = np.zeros(nr_rows)
|
||||
|
||||
dt = np.diff(t).mean()
|
||||
wsize = round(5./dt)
|
||||
|
||||
from stravastuff import ewmovingaverage
|
||||
velo2 = ewmovingaverage(velo,wsize)
|
||||
coords = np.array(latlongjson[0]['data'])
|
||||
try:
|
||||
lat = coords[:,0]
|
||||
lon = coords[:,1]
|
||||
except IndexError:
|
||||
lat = np.zeros(len(t))
|
||||
lon = np.zeros(len(t))
|
||||
|
||||
|
||||
|
||||
|
||||
strokelength = velo*60./(spm)
|
||||
strokelength[np.isinf(strokelength)] = 0.0
|
||||
|
||||
pace = 500./(1.0*velo2)
|
||||
pace[np.isinf(pace)] = 0.0
|
||||
|
||||
strokedata = pd.DataFrame({'t':10*t,
|
||||
'd':10*d,
|
||||
'p':10*pace,
|
||||
'spm':spm,
|
||||
'hr':hr,
|
||||
'lat':lat,
|
||||
'lon':lon,
|
||||
'strokelength':strokelength,
|
||||
})
|
||||
|
||||
from rowers.views import add_workout_from_strokedata
|
||||
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u)
|
||||
|
||||
res = add_workout_from_strokedata(u,1,workoutsummary,strokedata,
|
||||
source='strava')
|
||||
|
||||
|
||||
class STObjects(DjangoTestCase):
|
||||
def test_strokedata(self):
|
||||
with open('rowers/testdata/sporttrackstestdata.txt','r') as infile:
|
||||
data = json.load(infile)
|
||||
|
||||
from rowers.views import add_workout_from_stdata
|
||||
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u)
|
||||
|
||||
res = add_workout_from_stdata(u,1,data)
|
||||
|
||||
|
||||
class TestErrorPages(TestCase):
|
||||
def test_error_handlers(self):
|
||||
self.assertTrue(urls.handler404.endswith('.error404_view'))
|
||||
|
||||
Reference in New Issue
Block a user