From dc6a832464b4a5b6182b79a82eb6551afa0959c0 Mon Sep 17 00:00:00 2001 From: "robinwilliam.hundt" <robinwilliam.hundt@stud.uni-goettingen.de> Date: Tue, 21 Nov 2017 22:08:55 +0100 Subject: [PATCH] Started work on more data factorys for test #55 The methods in core.tests.data_factories.py are not finished nor good and overlap with GradyUserFactory. --- backend/core/serializers.py | 1 - backend/core/tests/data_factories.py | 63 ++++++++++++++++++++++++++++ backend/core/views.py | 1 - 3 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 backend/core/tests/data_factories.py diff --git a/backend/core/serializers.py b/backend/core/serializers.py index 8178ecfa..59e7587d 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 00000000..259d6d76 --- /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 2932ec09..20f185b4 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,) -- GitLab