Private
Public Access
1
0

Merge branch 'feature/testcoverage4' into develop

This commit is contained in:
Sander Roosendaal
2019-01-25 15:42:21 +01:00
4 changed files with 323 additions and 2 deletions

View File

@@ -7,7 +7,7 @@ from .models import (
Team,TeamInvite,TeamRequest,
WorkoutComment,C2WorldClassAgePerformance,PlannedSession,
GeoCourse,GeoPolygon,GeoPoint,VirtualRace,VirtualRaceResult,
PaidPlan
PaidPlan,IndoorVirtualRaceResult,
)
# Register your models here so you can use them in the Admin module
@@ -123,6 +123,10 @@ class VirtualRaceResultAdmin(admin.ModelAdmin):
list_display = ('race','userid','username','boattype','age','weightcategory')
search_fields = ['race__name','username']
class IndoorVirtualRaceResultAdmin(admin.ModelAdmin):
list_display = ('race','userid','username','boatclass','age','weightcategory')
search_fields = ['race__name','username']
class PaidPlanAdmin(admin.ModelAdmin):
list_display = ('name','shortname','price','paymenttype','paymentprocessor','clubsize','external_id')
@@ -142,4 +146,5 @@ admin.site.register(PlannedSession,PlannedSessionAdmin)
admin.site.register(GeoCourse, GeoCourseAdmin)
admin.site.register(VirtualRace, VirtualRaceAdmin)
admin.site.register(VirtualRaceResult, VirtualRaceResultAdmin)
admin.site.register(IndoorVirtualRaceResult, IndoorVirtualRaceResultAdmin)
admin.site.register(PaidPlan,PaidPlanAdmin)

View File

@@ -1,3 +1,319 @@
#from __future__ import print_function
from statements import *
nu = datetime.datetime.now()
import rowers.plannedsessions as plannedsessions
class TrainingPlanTest(TestCase):
def setUp(self):
self.u = UserFactory()
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=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):
for workout in self.user_workouts:
try:
os.remove(workout.csvfilename)
except (IOError, WindowsError):
pass
def test_createplan(self):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
url = '/rowers/createplan/'
response = self.c.get(url)
self.assertEqual(response.status_code,200)
# add target
targetdate = (nu+datetime.timedelta(days=300))
form_data = {
'name': faker.word(),
'date': targetdate.strftime("%Y-%m-%d"),
'notes': faker.text(),
}
targetform = TrainingTargetForm(form_data,user=self.u)
self.assertTrue(targetform.is_valid())
response = self.c.post(url,form_data)
self.assertEqual(response.status_code,200)
form_data = {
'name': faker.word(),
'target': '1',
'startdate': nu.strftime("%Y-%m-%d"),
'enddate': targetdate.strftime("%Y-%m-%d"),
'active': True,
}
newplanform = TrainingPlanForm(form_data,user=self.u)
self.assertTrue(newplanform.is_valid())
response = self.c.post(url,form_data)
self.assertEqual(response.status_code,200)
urlplan = '/rowers/plan/1/'
response = self.c.get(urlplan)
self.assertEqual(response.status_code,200)
html = BeautifulSoup(response.content,'html.parser')
urls = [a['href'] for a in html.find_all('a')]
for url in urls:
if 'macrocycle' in url and 'delete' not in url:
macrourl = url
print macrourl
response = self.c.get(macrourl)
self.assertEqual(response.status_code,200)
form_data = {
'name':faker.word(),
'startdate':nu.strftime("%Y-%m-%d"),
'enddate':targetdate.strftime("%Y-%m-%d"),
'notes':faker.text(),
}
macroform = TrainingMacroCycleForm(form_data)
self.assertTrue(macroform.is_valid())
response = self.c.post(macrourl,form_data,follow=True)
self.assertEqual(response.status_code,200)
self.assertRedirects(response,
expected_url='/rowers/plan/1/macro/3/',
status_code=302,target_status_code=200)
response = self.c.get(urlplan)
self.assertEqual(response.status_code,200)
html = BeautifulSoup(response.content,'html.parser')
urls = [a['href'] for a in html.find_all('a')]
for url in urls:
if 'planbymonths' in url:
print url
response = self.c.get(url,follow=True)
self.assertEqual(response.status_code,200)
response = self.c.get('/rowers/plan/1/macro/3/')
self.assertEqual(response.status_code,200)
html = BeautifulSoup(response.content,'html.parser')
urls = [a['href'] for a in html.find_all('a')]
tested = False
for url in urls:
if 'planbyweeks' in url and not tested:
print url
response = self.c.get(url,follow=True)
self.assertEqual(response.status_code,200)
tested = True
# add test for creating new sessions
def sessions_create(self):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
url = '/rowers/sessions/create/'
startdate = nu.date()
enddate = (nu+datetime.timedelta(days=3)).date()
preferreddate = startdate
response = self.c.get(url)
self.assertEqual(response.status_code,200)
post_data = {
'comment': faker.text(),
'criterium': 'none',
'enddate': enddate.strftime("%Y-%m-%d"),
'preferreddate': preferreddate.strftime("%Y-%m-%d"),
'startdate': startdate.strftime("%Y-%m-%d"),
'sessionmode':'time',
'sessiontype':'session',
'sessionunit':'min',
'sessionvalue': '60',
'name': faker.word(),
}
form = PlannedSessionForm(post_data)
self.assertEqual(form.is_valid())
response = self.c.post(url,post_data)
self.assertEqual(response.status_code,200)
class SessionLinkTest(TestCase):
def setUp(self):
self.u = UserFactory()
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=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()
for w in self.user_workouts:
startdatetime = w.startdatetime
startdate = (startdatetime-datetime.timedelta(days=1)).date()
enddate = (startdatetime+datetime.timedelta(days=1)).date()
preferreddate = startdatetime.date()
ps = SessionFactory(startdate=startdate,enddate=enddate,
sessiontype='session',
sessionmode = 'time',
criterium = 'none',
sessionvalue = 60,
sessionunit='min',
preferreddate=preferreddate,
manager=self.u,
)
ps.save()
result = plannedsessions.add_rower_session(self.r,ps)
def tearDown(self):
for workout in self.user_workouts:
try:
os.remove(workout.csvfilename)
except (IOError, WindowsError):
pass
def test_plannedsessions(self):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
w = self.user_workouts[0]
startdatetime = w.startdatetime
startdate = (startdatetime-datetime.timedelta(days=1)).date()
enddate = (startdatetime+datetime.timedelta(days=1)).date()
url = '/rowers/sessions/'
response = self.c.get(url)
self.assertEqual(response.status_code,200)
post_data = {
'startdate':startdate.strftime("%Y-%m-%d"),
'enddate': enddate.strftime("%Y-%m-%d"),
}
response = self.c.post(url,post_data)
self.assertEqual(response.status_code,200)
url2 = '/rowers/sessions/manage/'
response = self.c.post(url2,post_data)
self.assertEqual(response.status_code,200)
pss = PlannedSession.objects.filter(startdate=startdate,enddate=enddate)
self.assertTrue(len(pss)>0)
ps = pss[0]
post_data = {
'plannedsession': str(ps.id),
'workouts':[str(w.id)],
}
plannedsessionstuple = []
for ps in pss:
sessiontpl = (ps.id,ps.__unicode__())
plannedsessionstuple.append(sessiontpl)
plannedsessionstuple = tuple(plannedsessionstuple)
workoutdata = {}
workoutdata['initial'] = []
choices = []
for w in self.user_workouts:
wtpl = (w.id,w.__unicode__())
choices.append(wtpl)
workoutdata['choices'] = tuple(choices)
form = PlannedSessionSelectForm(plannedsessionstuple,post_data)
self.assertTrue(form.is_valid())
form = WorkoutSessionSelectForm(workoutdata,post_data)
self.assertTrue(form.is_valid())
response = self.c.post(url2,post_data)
self.assertEqual(response.status_code,200)
urlsession = '/rowers/sessions/{id}/'.format(id=ps.id)
response = self.c.get(urlsession)
self.assertEqual(response.status_code,200)
url = '/rowers/sessions/coach/'
response = self.c.get(url)
self.assertEqual(response.status_code,200)
def test_multiplesessions(self):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
pss = PlannedSession.objects.all()
earliestdate = min([ps.startdate for ps in pss])
latestdate = max([ps.enddate for ps in pss])
url = '/rowers/sessions/multicreate/?when={be}/{en}'.format(
be = earliestdate.strftime("%Y-%m-%d"),
en = latestdate.strftime("%Y-%m-%d"),
)
response = self.c.get(url)
self.assertEqual(response.status_code,200)
url = '/rowers/sessions/multicreate/user/{userid}/extra/1/?when={be}/{en}'.format(
be = earliestdate.strftime("%Y-%m-%d"),
en = latestdate.strftime("%Y-%m-%d"),
userid = self.u.id
)
response = self.c.get(url)
self.assertEqual(response.status_code,200)
url = '/rowers/sessions/multiclone/user/{userid}/?when={be}/{en}'.format(
be = earliestdate.strftime("%Y-%m-%d"),
en = latestdate.strftime("%Y-%m-%d"),
userid = self.u.id
)
response = self.c.get(url)
self.assertEqual(response.status_code,200)

Binary file not shown.

View File

@@ -2502,7 +2502,7 @@
</Trackpoint>
</Track>
</Lap>
<Notes>&lt;Element 'Notes' at 0x13918240&gt;</Notes>
<Notes>&lt;Element 'Notes' at 0x1f6b6c18&gt;</Notes>
</Activity>
</Activities>
<Creator>