Skip to content
Snippets Groups Projects
Commit 897fcdc1 authored by Vegard Murvold Sporstøl's avatar Vegard Murvold Sporstøl
Browse files

add boundary tests for workout and test for UC-1

parent d68fab4f
No related branches found
No related tags found
1 merge request!7Task3
Pipeline #114375 passed
......@@ -98,9 +98,7 @@ class WorkoutSerializer(serializers.HyperlinkedModelSerializer):
if "files" in validated_data:
files_data = validated_data.pop("files")
print(validated_data)
workout = Workout.objects.create(**validated_data)
print(workout)
for exercise_instance_data in exercise_instances_data:
ExerciseInstance.objects.create(workout=workout, **exercise_instance_data)
......
import json
from django.test import TestCase, RequestFactory, Client
from rest_framework.test import APIRequestFactory, APIClient
from workouts.permissions import (
IsOwner,
IsOwnerOfWorkout,
......@@ -15,40 +16,82 @@ from users.models import User
from comments.models import Comment
class NewWorkoutTestCase(TestCase):
### Test boundary values of new workout ###
class BoundaryValuesOfNewWorkout(TestCase):
def setUp(self):
self.client = Client()
self.client = APIClient()
self.user = User.objects.create(username="user",password="user")
self.client.force_authenticate(user=self.user)
self.request = json.loads('{"name": "test", "date": "2021-03-06T18:00:00.000Z", "notes": "note", "visibility": "PU", "exercise_instances": [], "filename": []}')
# Create user
self.user = User.objects.create(username="user")
self.user.set_password('user')
self.user.save()
def test_name(self):
self.request["name"] = ""
request = self.client.post('/api/workouts/', json.dumps(self.request), content_type='application/json')
self.assertEquals(request.status_code,400) #Blank should fail
self.request["name"] = "test"
request = self.client.post('/api/workouts/', json.dumps(self.request), content_type='application/json')
self.assertEquals(request.status_code,201)
# Authenticate user
response = self.client.post('/api/token/', {'username': 'user', 'password': 'user'})
content = json.loads(response.content)
self.client.defaults['HTTP_AUTHORIZATION'] = 'Bearer ' + content['access']
self.request["name"] = "@€xrgrdh"
request = self.client.post('/api/workouts/', json.dumps(self.request), content_type='application/json')
self.assertEquals(request.status_code,201) #Wierd signs should propably fail, but app is faulty
def test_newWorkoutRegistration(self):
"""
response = self.client.post('/api/workouts/', {'name': 'test', 'date': '2021-03-06T18:00:00Z',
'notes': 'note', 'owner': self.user,
'visibility': 'PU'})
self.assertEqual(response.status_code, 201)
"""
self.request["name"] = "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" #100
request = self.client.post('/api/workouts/', json.dumps(self.request), content_type='application/json')
self.assertEquals(request.status_code,201)
### Test boundary values of new workout ###
self.request["name"] = "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" #101
request = self.client.post('/api/workouts/', json.dumps(self.request), content_type='application/json')
self.assertEquals(request.status_code,400) #More than 100 chars should fail
class BoundaryValuesOfNewWorkout(TestCase):
def setUp(self):
""
def test_boundaryValuesOfNewWorkout(self):
"test boundary values of new workout"
def test_date(self):
self.request["date"] = ""
request = self.client.post('/api/workouts/', json.dumps(self.request), content_type='application/json')
self.assertEquals(request.status_code,400) #Blank should fail
self.request["date"] = "2021-32-32T18:00:00.000Z"
request = self.client.post('/api/workouts/', json.dumps(self.request), content_type='application/json')
self.assertEquals(request.status_code,400) #Not valid date should fail
self.request["date"] = "2021-03-08T18:00:00.000Z"
request = self.client.post('/api/workouts/', json.dumps(self.request), content_type='application/json')
self.assertEquals(request.status_code,201)
def test_notes(self):
self.request["notes"] = ""
request = self.client.post('/api/workouts/', json.dumps(self.request), content_type='application/json')
self.assertEquals(request.status_code,400) #Blank should fail
self.request["notes"] = "test"
request = self.client.post('/api/workouts/', json.dumps(self.request), content_type='application/json')
self.assertEquals(request.status_code,201)
### Test FR5 - Visibility of details, files and comments for Athletes, Coaches and other users###
# No upper value for notes
def test_visibility(self):
self.request["visibility"] = ""
request = self.client.post('/api/workouts/', json.dumps(self.request), content_type='application/json')
self.assertEquals(request.status_code,400) #Blank should fail
self.request["visibility"] = "XX"
request = self.client.post('/api/workouts/', json.dumps(self.request), content_type='application/json')
self.assertEquals(request.status_code,400) #Not one of the three cases should fail
self.request["visibility"] = "PRI"
request = self.client.post('/api/workouts/', json.dumps(self.request), content_type='application/json')
self.assertEquals(request.status_code,400) #More than 2 chars should fail
self.request["visibility"] = "PR"
request = self.client.post('/api/workouts/', json.dumps(self.request), content_type='application/json')
self.assertEquals(request.status_code,201)
### Test FR5 - Visibility of details, files and comments for Athletes, Coaches and other users ###
class AthleteAccessTestCase(TestCase):
def setUp(self):
......@@ -193,20 +236,15 @@ class UserAccessTestCase(TestCase):
class CreateWorkoutForAthleteTestCase(TestCase):
def setUp(self):
self.client = Client()
# Create user
self.user = User.objects.create(username="user")
self.user.set_password('user')
self.user.save()
# Authenticate user
response = self.client.post('/api/token/', {'username': 'user', 'password': 'user'})
content = json.loads(response.content)
self.client.defaults['HTTP_AUTHORIZATION'] = 'Bearer ' + content['access']
self.client = APIClient()
self.user = User.objects.create(username="user",password="user")
self.client.force_authenticate(user=self.user)
self.request = json.loads('{"name": "test", "date": "2021-03-06T18:00:00.000Z", "notes": "note", "visibility": "PU", "exercise_instances": [], "filename": []}')
def test_createWorkoutAsCoach(self):
""
self.request["owner"] = "test"
request = self.client.post('/api/workouts/', json.dumps(self.request), content_type='application/json')
self.assertEquals(request.status_code,201)
......
......@@ -129,10 +129,13 @@ class WorkoutList(
return self.create(request, *args, **kwargs)
def perform_create(self, serializer):
owner = self.request.POST.get("owner")
User = get_user_model()
user = User.objects.get(username=owner)
serializer.save(owner=user)
if(self.request.POST.get("owner")):
owner = self.request.POST.get("owner")
User = get_user_model()
user = User.objects.get(username=owner)
serializer.save(owner=user)
else:
serializer.save(owner=self.request.user)
def get_queryset(self):
qs = Workout.objects.none()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment