diff --git a/backend/core/serializers.py b/backend/core/serializers.py index 8178ecfae6f841340d82c7e9afada2bee9dd3c52..59e7587d8023e14c9cdaea1bf57edacc25e71398 100644 --- a/backend/core/serializers.py +++ b/backend/core/serializers.py @@ -1,5 +1,4 @@ from rest_framework import serializers - from core.models import ExamType, Feedback, Student, Submission diff --git a/backend/core/tests/data_factories.py b/backend/core/tests/data_factories.py new file mode 100644 index 0000000000000000000000000000000000000000..259d6d764c6cde01d3cab92fe266d17de38edce8 --- /dev/null +++ b/backend/core/tests/data_factories.py @@ -0,0 +1,63 @@ +from core.models import (UserAccount, Student, Tutor, Reviewer, + ExamType, SubmissionType, Submission, Feedback) + + +# These methods are meant to be used to provide data to insert into the test database + +def make_user(username='user01', password='p', fullname='us er01', is_admin=False): + user = UserAccount.objects.create(username=username, fullname=fullname, + is_admin=is_admin) + user.set_password(password) + user.save() + return user + + +def make_exam(module_reference='TestExam B.Inf.0042', total_score=42, pass_score=21, **kwargs): + return ExamType.objects.create(module_reference=module_reference, total_score=total_score, + pass_score=pass_score, **kwargs) + + +def make_submission_type(name='problem01', full_score=10, description='Very hard', + solution='Impossible!'): + return SubmissionType.objects.create(name=name, full_score=full_score, + description=description, solution=solution) + + +def make_student(user=None, exam=None): + if user is None: + user = make_user() + if exam is None: + exam = make_exam() + return Student.objects.create(user=user, exam=exam) + + +def make_tutor(user=None): + if user is None: + user = make_user() + return Tutor.objects.create(user=user) + + +def make_reviewer(user=None): + if user is None: + user = make_user() + return Reviewer.objects.create(user=user) + + +def make_submission(type=None, student=None, text='Too hard for me ;-('): + if type is None: + type = make_submission_type() + if student is None: + student = make_student() + return Submission.objects.create(text=text, type=type, student=student) + + +def make_feedback(of_tutor, of_submission=None, text='Very bad!', score=3): + if of_submission is None: + of_submission = make_submission() + return Feedback.objects.create(of_tutor=of_tutor, of_submission=of_submission, text=text, score=score) + + +def make_minimal_exam(): + submission = make_submission() # also creates default examType, submissionType and student + tutor = make_tutor(user=make_user(username='tutor01')) + make_feedback(of_tutor=tutor, of_submission=submission) diff --git a/backend/core/views.py b/backend/core/views.py index 2932ec09bb16aebe08c22bfdfa567ca288d737fd..20f185b4f5ba84513c37fdf1d9fc0e91d6cdd66e 100644 --- a/backend/core/views.py +++ b/backend/core/views.py @@ -9,7 +9,6 @@ from core.serializers import (FeedbackSerializer, StudentSerializer, log = logging.getLogger(__name__) - class StudentApiView(RetrieveAPIView): permission_classes = (IsStudent,)