Private
Public Access
1
0
Files
rowsandall/rowers/tests/test_unit_tests.py
2021-04-09 17:30:15 +02:00

230 lines
8.7 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
from rowers import dataprep
from rowers.views.workoutviews import get_video_id
class OtherUnitTests(TestCase):
def test_get_video_id(self):
url1 = 'http://youtu.be/_lOT2p_FCvA'
url2 = 'www.youtube.com/watch?v=_lOT2p_FCvA&feature=feedu'
url3 = 'http://www.youtube.com/embed/_lOT2p_FCvA'
url4 = 'http://www.youtube.com/v/_lOT2p_FCvA?version=3&hl=en_US'
url5 = 'https://www.youtube.com/watch?v=rTHlyTphWP0&index=6&list=PLjeDyYvG6-40qawYNR4juzvSOg-ezZ2a6'
url6 = 'youtube.com/watch?v=_lOT2p_FCvA'
expected = '_lOT2p_FCvA'
expected2 = 'rTHlyTphWP0'
result = get_video_id(url1)
self.assertEqual(result,expected)
result = get_video_id(url2)
self.assertEqual(result,expected)
result = get_video_id(url3)
self.assertEqual(result,expected)
result = get_video_id(url4)
self.assertEqual(result,expected)
result = get_video_id(url5)
self.assertEqual(result,expected2)
result = get_video_id(url6)
self.assertEqual(result,expected)
class DataPrepTests(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()
result = get_random_file(filename='rowers/tests/testdata/uherskehradiste_otw.csv')
self.wuh_otw = WorkoutFactory(user=self.r,
csvfilename=result['filename'],
starttime=result['starttime'],
startdatetime=result['startdatetime'],
duration=result['duration'],
distance=result['totaldist'],
workouttype = 'water',
)
def tearDown(self):
pass
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_uh)
def test_get_videodata(self,mocked_getsmallrowdata_uh):
data, metrics, maxtime = dataprep.get_video_data(self.wuh_otw)
self.assertEqual(len(data),9)
self.assertEqual(len(metrics),6)
self.assertEqual(int(maxtime),1737)
def test_polarization_index(self):
df = pd.read_csv('rowers/tests/testdata/uhfull.csv')
index = dataprep.polarization_index(df,self.r)
self.assertEqual(int(100*index),-67)
def test_get_latlon(self):
data = dataprep.get_latlon(self.wuh_otw.id)
self.assertEqual(len(data),2)
def test_workout_summary_to_df(self):
df = dataprep.workout_summary_to_df(self.r)
self.assertEqual(len(df),6)
@patch('rowers.dataprep.create_engine')
def test_update_c2id(self,mocked_sqlalchemy):
res = dataprep.update_c2id_sql(1,1)
self.assertEqual(res,1)
def test_checkmarker(self):
workouts = Workout.objects.all().order_by("-date")
wmax = dataprep.check_marker(workouts[0])
self.assertTrue(wmax.rankingpiece)
def test_workouttype_fromfit(self):
filename = 'rowers/tests/testdata/3x250m.fit'
res = dataprep.get_workouttype_from_fit(filename)
self.assertEqual(res,'Workout')
def test_workouttype_fromtcx(self):
filename = 'rowers/tests/testdata/crewnerddata.tcx'
res = dataprep.get_workouttype_from_tcx(filename)
self.assertEqual(res,'water')
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 tearDown(self):
pass
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)