Add basic certificate list tests
This commit is contained in:
parent
552746182f
commit
7f92272290
|
|
@ -0,0 +1,307 @@
|
||||||
|
from django.utils import timezone
|
||||||
|
from graphene_django.utils import GraphQLTestCase
|
||||||
|
|
||||||
|
from vbv_lernwelt.assignment.models import Assignment, AssignmentCompletion
|
||||||
|
from vbv_lernwelt.core.create_default_users import create_default_users
|
||||||
|
from vbv_lernwelt.course.creators.test_course import create_test_course
|
||||||
|
from vbv_lernwelt.course.creators.test_utils import (
|
||||||
|
add_course_session_group_supervisor,
|
||||||
|
add_course_session_user,
|
||||||
|
create_course_session_group,
|
||||||
|
create_user,
|
||||||
|
)
|
||||||
|
from vbv_lernwelt.course.models import CourseSession, CourseSessionUser
|
||||||
|
|
||||||
|
|
||||||
|
class TestCertificateList(GraphQLTestCase):
|
||||||
|
GRAPHQL_URL = "/server/graphql/"
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
create_default_users()
|
||||||
|
self.course = create_test_course(include_vv=False, with_sessions=True)
|
||||||
|
self.course_session = CourseSession.objects.get(title="Test Bern 2022 a")
|
||||||
|
assignment = Assignment.objects.get(
|
||||||
|
slug="test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"
|
||||||
|
)
|
||||||
|
|
||||||
|
self.supervisor = create_user("supervisor")
|
||||||
|
group = create_course_session_group(course_session=self.course_session)
|
||||||
|
add_course_session_group_supervisor(group=group, user=self.supervisor)
|
||||||
|
|
||||||
|
self.member_one = create_user("member one")
|
||||||
|
add_course_session_user(
|
||||||
|
course_session=self.course_session,
|
||||||
|
user=self.member_one,
|
||||||
|
role=CourseSessionUser.Role.MEMBER,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.member_two = create_user("member two")
|
||||||
|
add_course_session_user(
|
||||||
|
course_session=self.course_session,
|
||||||
|
user=self.member_two,
|
||||||
|
role=CourseSessionUser.Role.MEMBER,
|
||||||
|
)
|
||||||
|
|
||||||
|
AssignmentCompletion.objects.create(
|
||||||
|
assignment_user=self.member_one,
|
||||||
|
assignment=assignment,
|
||||||
|
learning_content_page=assignment.find_attached_learning_content(),
|
||||||
|
course_session=self.course_session,
|
||||||
|
completion_status="SUBMITTED",
|
||||||
|
submitted_at=timezone.now(),
|
||||||
|
completion_data={},
|
||||||
|
evaluation_max_points=10,
|
||||||
|
evaluation_points=5,
|
||||||
|
evaluation_passed=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
AssignmentCompletion.objects.create(
|
||||||
|
assignment_user=self.member_two,
|
||||||
|
assignment=assignment,
|
||||||
|
learning_content_page=assignment.find_attached_learning_content(),
|
||||||
|
course_session=self.course_session,
|
||||||
|
completion_status="SUBMITTED",
|
||||||
|
submitted_at=timezone.now(),
|
||||||
|
completion_data={},
|
||||||
|
evaluation_max_points=10,
|
||||||
|
evaluation_points=10,
|
||||||
|
evaluation_passed=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_supervisor_userprofile_certificate_summary(self):
|
||||||
|
self.client.force_login(self.supervisor)
|
||||||
|
|
||||||
|
query = f"""query competenceCertificateForUserQuery(
|
||||||
|
$courseSlug: String!,
|
||||||
|
$courseSessionId: ID!,
|
||||||
|
$userId: UUID!
|
||||||
|
) {{
|
||||||
|
competence_certificate_list_for_user(
|
||||||
|
course_slug: $courseSlug,
|
||||||
|
user_id: $userId
|
||||||
|
) {{
|
||||||
|
...CoursePageFields
|
||||||
|
competence_certificates {{
|
||||||
|
...CoursePageFields
|
||||||
|
assignments {{
|
||||||
|
...CoursePageFields
|
||||||
|
assignment_type
|
||||||
|
max_points
|
||||||
|
completion(course_session_id: $courseSessionId) {{
|
||||||
|
id
|
||||||
|
completion_status
|
||||||
|
submitted_at
|
||||||
|
evaluation_points
|
||||||
|
evaluation_max_points
|
||||||
|
evaluation_passed
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
learning_content {{
|
||||||
|
...CoursePageFields
|
||||||
|
circle {{
|
||||||
|
id
|
||||||
|
title
|
||||||
|
slug
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
}}
|
||||||
|
|
||||||
|
fragment CoursePageFields on CoursePageInterface {{
|
||||||
|
title
|
||||||
|
id
|
||||||
|
slug
|
||||||
|
content_type
|
||||||
|
frontend_url
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
|
||||||
|
"""
|
||||||
|
variables = {
|
||||||
|
"courseSessionId": str(self.course_session.id),
|
||||||
|
"courseSlug": self.course.slug,
|
||||||
|
"userId": str(self.member_one.id),
|
||||||
|
}
|
||||||
|
|
||||||
|
# WHEN
|
||||||
|
response = self.query(query, variables=variables)
|
||||||
|
|
||||||
|
# THEN
|
||||||
|
self.assertResponseNoErrors(response)
|
||||||
|
|
||||||
|
certificates = response.json()["data"]["competence_certificate_list_for_user"][
|
||||||
|
"competence_certificates"
|
||||||
|
]
|
||||||
|
self.assertEqual(len(certificates), 1)
|
||||||
|
|
||||||
|
assignments = certificates[0]["assignments"]
|
||||||
|
self.assertEqual(len(assignments), 2)
|
||||||
|
|
||||||
|
completion1 = assignments[0]["completion"]
|
||||||
|
self.assertEqual(completion1["completion_status"], "SUBMITTED")
|
||||||
|
self.assertEqual(completion1["evaluation_points"], 5)
|
||||||
|
self.assertEqual(completion1["evaluation_max_points"], 10)
|
||||||
|
self.assertEqual(completion1["evaluation_passed"], False)
|
||||||
|
|
||||||
|
completion2 = assignments[1]["completion"]
|
||||||
|
self.assertIsNone(completion2)
|
||||||
|
|
||||||
|
def test_member_cannot_see_other_user_certificate_summary(self):
|
||||||
|
self.client.force_login(self.member_one)
|
||||||
|
|
||||||
|
query = f"""query competenceCertificateForUserQuery(
|
||||||
|
$courseSlug: String!,
|
||||||
|
$courseSessionId: ID!,
|
||||||
|
$userId: UUID!
|
||||||
|
) {{
|
||||||
|
competence_certificate_list_for_user(
|
||||||
|
course_slug: $courseSlug,
|
||||||
|
user_id: $userId
|
||||||
|
) {{
|
||||||
|
...CoursePageFields
|
||||||
|
competence_certificates {{
|
||||||
|
...CoursePageFields
|
||||||
|
assignments {{
|
||||||
|
...CoursePageFields
|
||||||
|
assignment_type
|
||||||
|
max_points
|
||||||
|
completion(course_session_id: $courseSessionId) {{
|
||||||
|
id
|
||||||
|
completion_status
|
||||||
|
submitted_at
|
||||||
|
evaluation_points
|
||||||
|
evaluation_max_points
|
||||||
|
evaluation_passed
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
learning_content {{
|
||||||
|
...CoursePageFields
|
||||||
|
circle {{
|
||||||
|
id
|
||||||
|
title
|
||||||
|
slug
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
}}
|
||||||
|
|
||||||
|
fragment CoursePageFields on CoursePageInterface {{
|
||||||
|
title
|
||||||
|
id
|
||||||
|
slug
|
||||||
|
content_type
|
||||||
|
frontend_url
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
|
||||||
|
"""
|
||||||
|
variables = {
|
||||||
|
"courseSessionId": str(self.course_session.id),
|
||||||
|
"courseSlug": self.course.slug,
|
||||||
|
"userId": str(self.member_two.id),
|
||||||
|
}
|
||||||
|
|
||||||
|
# WHEN
|
||||||
|
response = self.query(query, variables=variables)
|
||||||
|
|
||||||
|
# THEN
|
||||||
|
self.assertResponseNoErrors(response)
|
||||||
|
self.assertIsNone(
|
||||||
|
response.json()["data"]["competence_certificate_list_for_user"]
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_member_userprofile_certificate_summary(self):
|
||||||
|
self.client.force_login(self.member_one)
|
||||||
|
|
||||||
|
query = f"""query competenceCertificateForUserQuery(
|
||||||
|
$courseSlug: String!,
|
||||||
|
$courseSessionId: ID!,
|
||||||
|
) {{
|
||||||
|
competence_certificate_list(
|
||||||
|
course_slug: $courseSlug,
|
||||||
|
) {{
|
||||||
|
...CoursePageFields
|
||||||
|
competence_certificates {{
|
||||||
|
...CoursePageFields
|
||||||
|
assignments {{
|
||||||
|
...CoursePageFields
|
||||||
|
assignment_type
|
||||||
|
max_points
|
||||||
|
completion(course_session_id: $courseSessionId) {{
|
||||||
|
id
|
||||||
|
completion_status
|
||||||
|
submitted_at
|
||||||
|
evaluation_points
|
||||||
|
evaluation_max_points
|
||||||
|
evaluation_passed
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
learning_content {{
|
||||||
|
...CoursePageFields
|
||||||
|
circle {{
|
||||||
|
id
|
||||||
|
title
|
||||||
|
slug
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
}}
|
||||||
|
|
||||||
|
fragment CoursePageFields on CoursePageInterface {{
|
||||||
|
title
|
||||||
|
id
|
||||||
|
slug
|
||||||
|
content_type
|
||||||
|
frontend_url
|
||||||
|
__typename
|
||||||
|
}}
|
||||||
|
|
||||||
|
"""
|
||||||
|
variables = {
|
||||||
|
"courseSessionId": str(self.course_session.id),
|
||||||
|
"courseSlug": self.course.slug,
|
||||||
|
}
|
||||||
|
|
||||||
|
# WHEN
|
||||||
|
response = self.query(query, variables=variables)
|
||||||
|
|
||||||
|
# THEN
|
||||||
|
self.assertResponseNoErrors(response)
|
||||||
|
|
||||||
|
certificates = response.json()["data"]["competence_certificate_list"][
|
||||||
|
"competence_certificates"
|
||||||
|
]
|
||||||
|
self.assertEqual(len(certificates), 1)
|
||||||
|
|
||||||
|
assignments = certificates[0]["assignments"]
|
||||||
|
self.assertEqual(len(assignments), 2)
|
||||||
|
|
||||||
|
completion1 = assignments[0]["completion"]
|
||||||
|
self.assertEqual(completion1["completion_status"], "SUBMITTED")
|
||||||
|
self.assertEqual(completion1["evaluation_points"], 5)
|
||||||
|
self.assertEqual(completion1["evaluation_max_points"], 10)
|
||||||
|
self.assertEqual(completion1["evaluation_passed"], False)
|
||||||
|
|
||||||
|
completion2 = assignments[1]["completion"]
|
||||||
|
self.assertIsNone(completion2)
|
||||||
Loading…
Reference in New Issue