116 lines
4.9 KiB
Python
116 lines
4.9 KiB
Python
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
from __future__ import unicode_literals
|
|
|
|
from .statements import *
|
|
from rowers.mytypes import rowtypes
|
|
|
|
|
|
nu = datetime.datetime.now()
|
|
|
|
# interactive plots
|
|
from rowers import interactiveplots
|
|
|
|
class InteractivePlotTests(TestCase):
|
|
def setUp(self):
|
|
self.u = UserFactory()
|
|
|
|
self.r = Rower.objects.create(user=self.u,
|
|
birthdate=faker.profile()['birthdate'],
|
|
gdproptin=True,surveydone=True,
|
|
gdproptindate=timezone.now(),
|
|
rowerplan='coach')
|
|
|
|
self.c = Client()
|
|
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
|
self.factory = RequestFactory()
|
|
self.password = faker.word()
|
|
self.u.set_password(self.password)
|
|
self.u.save()
|
|
|
|
def test_interactive_hr_piechart(self):
|
|
df = pd.read_csv('rowers/tests/testdata/getrowdata_mock.csv')
|
|
|
|
script, div = interactiveplots.interactive_hr_piechart(df, self.r,'')
|
|
self.assertFalse(len(script)==0)
|
|
self.assertFalse(len(div)==0)
|
|
|
|
def test_interactive_workouttype_piechart(self):
|
|
workouts = Workout.objects.filter(user=self.r)
|
|
script, div = interactiveplots.interactive_workouttype_piechart(workouts)
|
|
self.assertFalse(len(script)==0)
|
|
self.assertFalse(len(div)==0)
|
|
|
|
def test_interactive_boxchart(self):
|
|
df = pd.read_csv('rowers/tests/testdata/boxplotdata.csv')
|
|
|
|
script, div = interactiveplots.interactive_boxchart(df, 'spm')
|
|
|
|
self.assertFalse(len(script)==0)
|
|
self.assertFalse(len(div)==0)
|
|
|
|
def test_interactive_activitychart(self):
|
|
workouts = Workout.objects.filter(user=self.r).order_by('date')
|
|
workouts2 = Workout.objects.filter(user=self.r).order_by('-date')
|
|
|
|
startdate = workouts[0].date-datetime.timedelta(days=5)
|
|
enddate = workouts2[0].date+datetime.timedelta(days=5)
|
|
script, div = interactiveplots.interactive_activitychart(workouts,startdate,enddate)
|
|
self.assertFalse(len(script)==0)
|
|
self.assertFalse(len(div)==0)
|
|
|
|
def test_interactive_otwcpchart(self):
|
|
df = pd.read_csv('rowers/tests/testdata/otwcp.csv')
|
|
|
|
script, div, p1, ratio, message = interactiveplots.interactive_otwcpchart(df,r=self.r,cpfit='data')
|
|
self.assertFalse(len(script)==0)
|
|
self.assertFalse(len(div)==0)
|
|
|
|
script, div, p1, ratio, message = interactiveplots.interactive_otwcpchart(df,r=self.r,cpfit='automatic')
|
|
self.assertFalse(len(script)==0)
|
|
self.assertFalse(len(div)==0)
|
|
|
|
@patch('rowers.dataprep.create_engine')
|
|
@patch('rowers.dataprep.getsmallrowdata_db', side_effect=mocked_getsmallrowdata_db)
|
|
def test_interactive_chart(self, mocked_sqlalchemy,
|
|
mocked_getsmallrowdata_db):
|
|
workout = Workout.objects.filter(user=self.r,workouttype__in=mytypes.rowtypes)[0]
|
|
id = workout.id
|
|
|
|
script, div = interactiveplots.interactive_chart(id=id)
|
|
self.assertFalse(len(script)==0)
|
|
self.assertFalse(len(div)==0)
|
|
|
|
intervaldata = {
|
|
'itime': [0.0, 234.0, 61.2, 59.7, 60.5, 61.0, 44.2, 74.7, 44.8, 75.1, 43.4, 78.0, 40.1, 79.4, 42.4, 76.1, 45.4, 75.2, 43.2, 255.0, 60.0, 60.6, 60.7, 60.7, 55.3, 65.4, 58.2, 60.2, 59.7, 62.0, 44.7, 72.5, 43.2, 78.5, 56.4, 889.5],
|
|
'idist': [0, 700, 257, 179, 254, 197, 185, 246, 190, 240, 181, 240, 169, 241, 179, 215, 180, 223, 179, 302, 247, 190, 246, 180, 229, 197, 242, 179, 245, 189, 175, 208, 166, 218, 224, 2399],
|
|
'itype': [4, 3, 4.0, 3, 4.0, 3, 4.0, 3, 4.0, 3, 4.0, 3, 4.0, 3, 4.0, 3, 4.0, 3, 4.0, 3, 4.0, 3, 4.0, 3, 4.0, 3, 4.0, 3, 4.0, 3, 4.0, 3, 4.0, 3, 4.0, 3],
|
|
'selector': 'power',
|
|
'normp': 203,
|
|
'normv': 3.557050625695544
|
|
}
|
|
|
|
script, div = interactiveplots.interactive_chart(id=id,intervaldata=intervaldata)
|
|
self.assertFalse(len(script)==0)
|
|
self.assertFalse(len(div)==0)
|
|
|
|
def test_interactive_chart_video(self):
|
|
datadf = pd.read_csv('rowers/tests/testdata/videodata.csv')
|
|
data = datadf.to_dict()
|
|
|
|
script, div = interactiveplots.interactive_chart_video(data)
|
|
self.assertFalse(len(script)==0)
|
|
self.assertFalse(len(div)==0)
|
|
|
|
@patch('rowers.dataprep.create_engine')
|
|
@patch('rowers.dataprep.getsmallrowdata_db', side_effect=mocked_getsmallrowdata_db)
|
|
def test_interactive_flexchart_stacked(self, mocked_sqlalchemy,
|
|
mocked_getsmallrowdata_db):
|
|
workout = Workout.objects.filter(user=self.r,workouttype__in=mytypes.rowtypes)[0]
|
|
id = workout.id
|
|
|
|
script, div, js_res, css_res, comment = interactiveplots.interactive_flexchart_stacked(id,self.r)
|
|
self.assertFalse(len(script)==0)
|
|
self.assertFalse(len(div)==0)
|