diff --git a/rowers/tests/test_plans.py b/rowers/tests/test_plans.py
index 2f031554..1a23bd23 100644
--- a/rowers/tests/test_plans.py
+++ b/rowers/tests/test_plans.py
@@ -2,7 +2,9 @@
from statements import *
nu = datetime.datetime.now()
-class PlannedSessionsTest(TestCase):
+import rowers.plannedsessions as plannedsessions
+
+class TrainingPlanTest(TestCase):
def setUp(self):
self.u = UserFactory()
@@ -65,9 +67,253 @@ class PlannedSessionsTest(TestCase):
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)
-
diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz
index 045ae87e..ad38adb5 100644
Binary files a/rowers/tests/testdata/testdata.csv.gz and b/rowers/tests/testdata/testdata.csv.gz differ
diff --git a/rowers/tests/testdata/testdata.tcx b/rowers/tests/testdata/testdata.tcx
index 16f58ea9..aad5afb6 100644
--- a/rowers/tests/testdata/testdata.tcx
+++ b/rowers/tests/testdata/testdata.tcx
@@ -2502,7 +2502,7 @@
- <Element 'Notes' at 0x13065cf8>
+ <Element 'Notes' at 0x1f6b6c18>