Private
Public Access
1
0

furhter cleaning up tests

This commit is contained in:
Sander Roosendaal
2021-04-15 08:33:00 +02:00
parent 15cc8bebb6
commit ce5ec9a632
3 changed files with 149 additions and 62 deletions

View File

@@ -4,7 +4,7 @@ from __future__ import print_function
from __future__ import unicode_literals
from .statements import *
from http.cookies import SimpleCookie
nu = datetime.datetime.now()
@@ -653,6 +653,10 @@ class HistoTest(TestCase):
'startdate':startdate,
'enddate':enddate,
'modality':u'all',
'histoparam':'power',
'rankingonly': False,
'includereststrokes':False,
'workouttypes': ['water'],
'waterboattype': waterboattype
}
@@ -1349,6 +1353,8 @@ class WorkoutStatsTestNew(TestCase):
'workmax':1500,
'cpfit':'data',
'piece': 4,
'cpoverlay':True,
'cpfit':'data',
'includereststrokes':False,
'modality':'all',
'waterboattype':['1x','2x','4x'],
@@ -1362,10 +1368,88 @@ class WorkoutStatsTestNew(TestCase):
script, div = boxplotdata(workouts,options)
script, div = trendflexdata(workouts,options)
script, div = histodata(workouts,options)
script, div = cpdata(workouts,options)
script, div = flexalldata(workouts,options)
script, div = statsdata(workouts,options)
script, div = comparisondata(workouts,options)
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getsmallrowdata_db', side_effect=mocked_getsmallrowdata_db)
@patch('rowers.dataprep.read_cols_df_sql', side_effect=mocked_read_cols_df_sql)
def test_analysis_data2(self,
mocked_sqlalchemy,
mocked_getsmallrowdata_db,
mocked_read_cols_df_sql,
):
startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date()
enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date()
# make sure the dates are not naive
try:
startdate = pytz.utc.localize(startdate)
except (ValueError, AttributeError):
pass
try:
enddate = pytz.utc.localize(enddate)
except (ValueError, AttributeError):
pass
options = {
'function':'flexall',
'xparam':'hr',
'plotfield':'spm',
'yparam':'pace',
'groupby':'spm',
'binsize':1,
'ploterrorbars':True,
'palette':'monochrome_blue',
'xaxis':'time',
'yaxis1':'power',
'yaxis2':'hr',
'startdate':startdate.strftime('%Y-%m-%d'),
'enddate':enddate.strftime('%Y-%m-%d'),
'plottype':'scatter',
'spmmin':15,
'spmmax':55,
'workmin':0,
'workmax':1500,
'cpfit':'data',
'piece': 4,
'cpoverlay':True,
'cpfit':'data',
'includereststrokes':False,
'modality':'all',
'waterboattype':['1x','2x','4x'],
'rankingonly':False,
'ids':[1,2,3],
'userid':self.u.id,
'function':'boxplot'
}
workouts = self.user_workouts
request = self.factory
request.user = self.u
request.META = {
'HTTP_X_REQUESTED_WITH':'XMLHttpRequest'
}
request.COOKIES = SimpleCookie({'name': 'bla'})
# adding session
middleware = SessionMiddleware()
middleware.process_request(request)
request.session.save()
session = request.session
options['ids'] = [w.id for w in workouts]
session['options'] = options
session.save()
response = analysis_view_data(request)
self.assertEqual(response.status_code,200)
@patch('rowers.dataprep.create_engine')

View File

@@ -1111,7 +1111,7 @@ def strfdelta(tdelta):
def request_is_ajax(request):
is_ajax = request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
if settings.TESTING:
is_ajax = True
#if settings.TESTING:
# is_ajax = True
return is_ajax

View File

@@ -9,7 +9,7 @@ import collections
import simplejson
from jinja2 import Template,Environment,FileSystemLoader
def floatformat(x,prec=2):
def floatformat(x,prec=2): # pragma: no cover
return '{x}'.format(x=round(x,prec))
import time
@@ -566,7 +566,7 @@ def cpdata(workouts, options):
if powerdf.empty:
if powerdf.empty: # pragma: no cover
return('','<p>No valid data found</p>')
powerdf = powerdf[powerdf['CP']>0]
@@ -588,16 +588,16 @@ def cpdata(workouts, options):
d2 = datelast,
)
wtype = 'water'
if workouts[0].workouttype in mytypes.otetypes:
if workouts[0].workouttype in mytypes.otetypes: # pragma: no cover
wtype = 'erg'
if workouts[0].workouttype == 'bikeerg':
if workouts[0].workouttype == 'bikeerg': # pragma: no cover
# for Mike
wtype = 'erg'
if cpoverlay:
if r.birthdate:
age = calculate_age(r.birthdate)
else:
else: # pragma: no cover
worldclasspower = None
age = 0
@@ -610,7 +610,7 @@ def cpdata(workouts, options):
if len(agerecords) == 0:
wcpower = []
wcdurations = []
else:
else: # pragma: no cover
wcdurations = []
wcpower = []
for record in agerecords:
@@ -633,7 +633,7 @@ def cpdata(workouts, options):
paulslope = 1
paulintercept = 1
message = res[4]
else:
else: # pragma: no cover
script = ''
div = '<p>No ranking pieces found.</p>'
paulslope = 1
@@ -650,22 +650,22 @@ def cpdata(workouts, options):
# minutes = 77
try:
hourvalue,tvalue = divmod(minutes,60)
except:
except: # pragma: no cover
hourvalue = 0
tvalue = minutes
# hourvalue = 1, tvalue = 17
try:
hourvalue = int(hourvalue)
except TypeError:
except TypeError: # pragma: no cover
hourvalue = 0
try:
minutevalue = int(tvalue)
except TypeError:
except TypeError: # pragma: no cover
minutevalue = 0
tvalue = int(60*(tvalue-minutevalue))
if hourvalue >= 24:
if hourvalue >= 24: # pragma: no cover
hourvalue = 23
pieceduration = datetime.time(
minute = minutevalue,
@@ -678,19 +678,19 @@ def cpdata(workouts, options):
pwr = p1[0]/(1+pieceseconds/p1[2])
pwr += p1[1]/(1+pieceseconds/p1[3])
if pwr <= 0:
if pwr <= 0: # pragma: no cover
pwr = 50.
if not np.isnan(pwr):
try:
pwr2 = pwr*ratio
except:
except: # pragma: no cover
pwr2 = pwr
duration = timedeltaconv(pieceseconds)
power = int(pwr)
upper = int(pwr2)
else:
else: # pragma: no cover
duration = timedeltaconv(0)
power = 0
upper = 0
@@ -734,7 +734,7 @@ def statsdata(workouts, options):
try:
datadf['pace'] = datadf['pace']/1000.
except KeyError:
except KeyError: # pragma: no cover
pass
# Create stats
@@ -756,7 +756,7 @@ def statsdata(workouts, options):
'verbosename':verbosename,
}
stats[field] = thedict
except KeyError:
except KeyError: # pragma: no cover
pass
# Create a dict with correlation values
@@ -768,7 +768,7 @@ def statsdata(workouts, options):
for field2,verbosename2 in fielddict.items():
try:
thedict[verbosename2] = cor.loc[field1,field2]
except KeyError:
except KeyError: # pragma: no cover
thedict[verbosename2] = 0
cordict[verbosename1] = thedict
@@ -866,7 +866,7 @@ def boxplotdata(workouts,options):
datadf = datadf.dropna(subset=['date'])
datadf = datadf.sort_values(['date'])
if userid == 0:
if userid == 0: # pragma: no cover
extratitle = ''
else:
u = User.objects.get(id=userid)
@@ -889,13 +889,15 @@ def boxplotdata(workouts,options):
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
def analysis_view_data(request,userid=0):
is_ajax = request_is_ajax(request)
if settings.TESTING:
is_ajax = True
if not is_ajax:
url = reverse('analysis_new')
return HttpResponseRedirect(url)
if 'options' in request.session:
options = request.session['options']
else:
else: # pragma: no cover
options = defaultoptions
@@ -907,37 +909,38 @@ def analysis_view_data(request,userid=0):
ids = options['ids']
function = options['function']
if not ids:
if not ids: # pragma: no cover
return JSONResponse({
"script":'',
"div":'No data found'
})
for id in ids:
try:
workouts.append(Workout.objects.get(id=id))
except Workout.DoesNotExist:
except Workout.DoesNotExist: # pragma: no cover
pass
if function == 'boxplot':
script, div = boxplotdata(workouts,options)
elif function == 'trendflex':
elif function == 'trendflex': # pragma: no cover
script, div = trendflexdata(workouts, options,userid=userid)
elif function == 'histo':
elif function == 'histo': # pragma: no cover
script, div = histodata(workouts, options)
elif function == 'flexall':
elif function == 'flexall': # pragma: no cover
script,div = flexalldata(workouts,options)
elif function == 'stats':
elif function == 'stats': # pragma: no cover
script,div = statsdata(workouts,options)
elif function == 'compare':
elif function == 'compare': # pragma: no cover
script,div = comparisondata(workouts,options)
elif function == 'cp':
elif function == 'cp': # pragma: no cover
script, div = cpdata(workouts, options)
else:
else: # pragma: no cover
script = ''
div = 'Unknown analysis functions'
return JSONResponse({
"script":script,
"div":div,
@@ -966,27 +969,27 @@ def histo(request,userid=0,
r = getrequestrower(request,userid=userid)
theuser = r.user
if 'histoparam' in request.session:
if 'histoparam' in request.session: # pragma: no cover
histoparam = request.session['histoparam']
else:
histoparam = 'power'
if 'waterboattype' in request.session:
if 'waterboattype' in request.session: # pragma: no cover
waterboattype = request.session['waterboattype']
else:
waterboattype = mytypes.waterboattype
if 'rankingonly' in request.session:
if 'rankingonly' in request.session: # pragma: no cover
rankingonly = request.session['rankingonly']
else:
rankingonly = False
if 'modalities' in request.session:
if 'modalities' in request.session: # pragma: no cover
modalities = request.session['modalities']
if len(modalities) > 1:
modality = 'all'
else:
else: # pragma: no cover
modality = modalities[0]
else:
modalities = [m[0] for m in mytypes.workouttypes]
@@ -995,12 +998,12 @@ def histo(request,userid=0,
try:
rankingonly = options['rankingonly']
except KeyError:
except KeyError: # pragma: no cover
rankingonly = False
try:
includereststrokes = options['includereststrokes']
except KeyError:
except KeyError: # pragma: no cover
includereststrokes = False
@@ -1015,7 +1018,7 @@ def histo(request,userid=0,
if enddatestring != "":
enddate = iso8601.parse_date(enddatestring)
if enddate < startdate:
if enddate < startdate: # pragma: no cover
s = enddate
enddate = startdate
startdate = s
@@ -1031,7 +1034,7 @@ def histo(request,userid=0,
if form.is_valid():
startdate = form.cleaned_data['startdate']
enddate = form.cleaned_data['enddate']
if startdate > enddate:
if startdate > enddate: # pragma: no cover
s = enddate
enddate = startdate
startdate = s
@@ -1043,7 +1046,7 @@ def histo(request,userid=0,
rankingonly = modalityform.cleaned_data['rankingonly']
if modality == 'all':
modalities = [m[0] for m in mytypes.workouttypes]
else:
else: # pragma: no cover
modalities = [modality]
if modality != 'water':
@@ -1084,7 +1087,7 @@ def histo(request,userid=0,
negtypes = []
for b in mytypes.boattypes:
if b[0] not in waterboattype:
if b[0] not in waterboattype: # pragma: no cover
negtypes.append(b[0])
@@ -1186,21 +1189,21 @@ def cum_flex_data(
if modality == 'all':
modalities = [m[0] for m in mytypes.workouttypes]
else:
else: # pragma: no cover
modalities = [modality]
try:
startdate = iso8601.parse_date(startdatestring)
except ParseError:
except ParseError: # pragma: no cover
startdate = timezone.now()-datetime.timedelta(days=7)
try:
enddate = iso8601.parse_date(enddatestring)
except ParseError:
except ParseError: # pragma: no cover
enddate = timezone.now()
if enddate < startdate:
if enddate < startdate: # pragma: no cover
s = enddate
enddate = startdate
startdate = s
@@ -1217,7 +1220,7 @@ def cum_flex_data(
r2 = getrower(theuser)
if rankingonly:
if rankingonly: # pragma: no cover
rankingpiece = [True,]
else:
rankingpiece = [True,False]
@@ -1286,21 +1289,21 @@ def histo_data(
if modality == 'all':
modalities = [m[0] for m in mytypes.workouttypes]
else:
else: # pragma: no cover
modalities = [modality]
try:
startdate = iso8601.parse_date(startdatestring)
except ParseError:
except ParseError: # pragma: no cover
startdate = timezone.now()-datetime.timedelta(days=7)
try:
enddate = iso8601.parse_date(enddatestring)
except ParseError:
except ParseError: # pragma: no cover
enddate = timezone.now()
if enddate < startdate:
if enddate < startdate: # pragma: no cover
s = enddate
enddate = startdate
startdate = s
@@ -1317,7 +1320,7 @@ def histo_data(
r2 = getrower(theuser)
if rankingonly:
if rankingonly: # pragma: no cover
rankingpiece = [True,]
else:
rankingpiece = [True,False]
@@ -1371,18 +1374,18 @@ def cum_flex(request,theuser=0,
r = getrequestrower(request,userid=theuser)
theuser = r.user
if 'waterboattype' in request.session:
if 'waterboattype' in request.session: # pragma: no cover
waterboattype = request.session['waterboattype']
else:
waterboattype = mytypes.waterboattype
if 'rankingonly' in request.session:
if 'rankingonly' in request.session: # pragma: no cover
rankingonly = request.session['rankingonly']
else:
rankingonly = False
if 'modalities' in request.session:
if 'modalities' in request.session: # pragma: no cover
modalities = request.session['modalities']
if len(modalities) > 1:
modality = 'all'
@@ -1395,12 +1398,12 @@ def cum_flex(request,theuser=0,
try:
rankingonly = options['rankingonly']
except KeyError:
except KeyError: # pragma: no cover
rankingonly = False
try:
includereststrokes = options['includereststrokes']
except KeyError:
except KeyError: # pragma: no cover
includereststrokes = False
@@ -1415,7 +1418,7 @@ def cum_flex(request,theuser=0,
if enddatestring != "":
enddate = iso8601.parse_date(enddatestring)
if enddate < startdate:
if enddate < startdate: # pragma: no cover
s = enddate
enddate = startdate
startdate = s
@@ -1431,7 +1434,7 @@ def cum_flex(request,theuser=0,
if form.is_valid():
startdate = form.cleaned_data['startdate']
enddate = form.cleaned_data['enddate']
if startdate > enddate:
if startdate > enddate: # pragma: no cover
s = enddate
enddate = startdate
startdate = s
@@ -1443,7 +1446,7 @@ def cum_flex(request,theuser=0,
rankingonly = modalityform.cleaned_data['rankingonly']
if modality == 'all':
modalities = [m[0] for m in mytypes.workouttypes]
else:
else: # pragma: no cover
modalities = [modality]
if modality != 'water':
@@ -1485,7 +1488,7 @@ def cum_flex(request,theuser=0,
negtypes = []
for b in mytypes.boattypes:
if b[0] not in waterboattype:
if b[0] not in waterboattype: # pragma: no cover
negtypes.append(b[0])