Private
Public Access
1
0

first pass straightforward testing workviews

This commit is contained in:
Sander Roosendaal
2019-02-11 22:29:36 +01:00
parent dfb27f264c
commit 45d2c73fc7
7 changed files with 995 additions and 3 deletions

View File

@@ -2,6 +2,28 @@ from statements import *
nu = datetime.datetime.now()
from django.core.files import File
from django.utils.six import BytesIO
from PIL import Image
from io import StringIO
def create_image(storage, filename, size=(100, 100), image_mode='RGB', image_format='PNG'):
"""
Generate a test image, returning the filename that it was saved as.
If ``storage`` is ``None``, the BytesIO containing the image data
will be passed instead.
"""
data = BytesIO()
Image.new(image_mode, size).save(data, image_format)
data.seek(0)
if not storage:
return data
image_file = ContentFile(data.read())
return storage.save(filename, image_file)
@override_settings(TESTING=True)
class WorkoutViewTest(TestCase):
def setUp(self):
@@ -69,6 +91,18 @@ class WorkoutViewTest(TestCase):
workouttype = 'rower',
)
result = get_random_file(filename='rowers/tests/testdata/erg2.csv')
self.werg2copy = WorkoutFactory(user=self.r,
csvfilename=result['filename'],
starttime=result['starttime'],
startdatetime=result['startdatetime'],
duration=result['duration'],
distance=result['totaldist'],
workouttype = 'rower',
)
result = get_random_file(filename='rowers/tests/testdata/erg3.csv')
self.werg3 = WorkoutFactory(user=self.r,
@@ -152,7 +186,7 @@ class WorkoutViewTest(TestCase):
expected_url = reverse(self.r.defaultlandingpage,
kwargs = {
'id':11
'id':12
})
self.assertRedirects(response,
@@ -390,6 +424,10 @@ class WorkoutViewTest(TestCase):
response = self.c.post(url,form_data,follow=True)
self.assertEqual(response.status_code,200)
url = reverse('workout_unsubscribe_view',kwargs={'id':self.wwater.id})
response = self.c.get(url)
self.assertEqual(response.status_code,200)
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getsmallrowdata_db')
@@ -402,3 +440,165 @@ class WorkoutViewTest(TestCase):
response = self.c.get(url)
self.assertEqual(response.status_code,200)
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getsmallrowdata_db')
def notworking_test_workout_image(self, mocked_sqlalchemy,
mocked_getsmallrowdata_db):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
url = reverse('workout_uploadimage_view',kwargs={'id':self.werg1.id})
response = self.c.get(url)
self.assertEqual(response.status_code,200)
with open('rowers/tests/testdata/lofoten.jpg','rb') as screenshot_file:
file_data = {'file':screenshot_file}
form_data = {
'file':screenshot_file,
}
#form = ImageForm(form_data, file_data)
#if not form.is_valid():
# print form.errors
#self.assertTrue(form.is_valid())
response = self.c.post(url,form_data,format='multipart',follow=True)
expected_url = reverse(self.r.defaultlandingpage,kwargs={'id':self.werg1.id})
self.assertRedirects(response,
expected_url=expected_url,
status_code=302,target_status_code=200)
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getsmallrowdata_db')
@patch('rowers.dataprep.getrowdata_db',side_effect=mocked_getrowdata_db)
def test_workout_split(self, mocked_sqlalchemy, mocked_getsmallrowdata_db,
mocked_getrowdata_db):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
url = reverse('workout_split_view',kwargs={'id':self.werg1.id})
response = self.c.get(url)
self.assertEqual(response.status_code,200)
form_data = {
'splittime': '2:00',
'splitmode': ['keep original','keep first','keep second']
}
form = WorkoutSplitForm(form_data)
self.assertTrue(form.is_valid())
response = self.c.post(url, form_data,follow=True)
self.assertEqual(response.status_code,200)
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getrowdata_db',side_effect=mocked_getrowdata_db)
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_forfusion)
def test_workout_fusion(self, mocked_sqlalchemy, mocked_getrowdata_db,
mocked_getsmallrowdata_db):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
url = reverse('workout_fusion_view',kwargs={'id1':self.werg2.id,
'id2':self.werg2copy.id})
response = self.c.get(url)
self.assertEqual(response.status_code,200)
form_data = {
'posneg':'pos',
'offset': datetime.timedelta(seconds=0),
'columns': ['power','hr'
]
}
form = FusionMetricChoiceForm(form_data,instance=self.werg2copy)
self.assertTrue(form.is_valid())
response = self.c.post(url,form_data,follow=True)
self.assertEqual(response.status_code,200)
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getsmallrowdata_db')
def test_editsummaryview(self, mocked_sqlalchemy, mocked_getsmallrowdata_db):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
url = reverse('workout_summary_edit_view',kwargs={'id':self.wwater.id})
response = self.c.get(url)
self.assertEqual(response.status_code,200)
form_data = {
'intervalstring':'4x2min/1min',
}
form = SummaryStringForm(form_data)
self.assertTrue(form.is_valid())
response = self.c.post(url,form_data)
self.assertEqual(response.status_code,200)
form_data = {
'powerorpace':'power',
'value_pace':'2:23',
'value_power':'200',
'value_work':'400',
'savepowerpaceform':True,
}
response = self.c.post(url,form_data)
self.assertEqual(response.status_code,200)
form_data = {
'savestringform':'4x2min/1min',
}
response = self.c.post(url,form_data)
self.assertEqual(response.status_code,200)
form_data = {
'selector':'power',
'power': 200,
'pace': '2:30',
'work': 400,
}
form = PowerIntervalUpdateForm(form_data)
self.assertTrue(form.is_valid())
response = self.c.post(url,form_data)
self.assertEqual(response.status_code,200)
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getsmallrowdata_db')
def test_workout_delete(self, mocked_sqlalchemy, mocked_getsmallrowdata_db):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
url = reverse('workout_delete',kwargs={'pk':self.wwater.id})
response = self.c.get(url)
self.assertEqual(response.status_code,200)
post_data = {}
response = self.c.post(url,follow=True)
expected_url = reverse('workouts_view')
self.assertRedirects(response,
expected_url=expected_url,
status_code=302,target_status_code=200)