Merged in feature/VBV-689-person-cs-error (pull request #341)
Fix course_sessoins list for person view Approved-by: Daniel Egger
This commit is contained in:
commit
2fe182b3be
|
|
@ -1,4 +1,6 @@
|
|||
from django.test import TestCase
|
||||
from django.urls import reverse
|
||||
from rest_framework.test import APITestCase
|
||||
|
||||
from vbv_lernwelt.assignment.models import (
|
||||
Assignment,
|
||||
|
|
@ -9,7 +11,11 @@ from vbv_lernwelt.core.constants import (
|
|||
TEST_COURSE_SESSION_BERN_ID,
|
||||
TEST_COURSE_SESSION_ZURICH_ID,
|
||||
TEST_STUDENT1_USER_ID,
|
||||
TEST_STUDENT2_USER_ID,
|
||||
TEST_STUDENT3_USER_ID,
|
||||
TEST_SUPERVISOR1_USER_ID,
|
||||
TEST_TRAINER1_USER_ID,
|
||||
TEST_TRAINER2_USER_ID,
|
||||
)
|
||||
from vbv_lernwelt.core.create_default_users import create_default_users
|
||||
from vbv_lernwelt.core.models import User
|
||||
|
|
@ -541,3 +547,79 @@ class ExportXlsTestCase(TestCase):
|
|||
[(TEST_COURSE_SESSION_ZURICH_ID, [circle_fahrzeug.id, circle_reisen.id])],
|
||||
allowed_circles,
|
||||
)
|
||||
|
||||
|
||||
class PersonsTestCase(APITestCase):
|
||||
def setUp(self):
|
||||
create_default_users()
|
||||
create_test_course(include_uk=True, include_vv=False, with_sessions=True)
|
||||
|
||||
self.student1 = User.objects.get(id=TEST_STUDENT1_USER_ID)
|
||||
self.csu1_student1 = CourseSessionUser.objects.get(
|
||||
user=self.student1, course_session__id=TEST_COURSE_SESSION_BERN_ID
|
||||
)
|
||||
self.student2 = User.objects.get(id=TEST_STUDENT2_USER_ID)
|
||||
self.csu1_student2 = CourseSessionUser.objects.get(
|
||||
user=self.student2, course_session__id=TEST_COURSE_SESSION_ZURICH_ID
|
||||
)
|
||||
|
||||
def test_get_course_sessions_with_roles_for_trainer(self):
|
||||
trainer = User.objects.get(id=TEST_TRAINER1_USER_ID)
|
||||
self.client.force_login(trainer)
|
||||
|
||||
url = reverse(
|
||||
"get_dashboard_persons",
|
||||
)
|
||||
|
||||
response = self.client.get(url)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(len(response.data), 4)
|
||||
user_ids = [str(user["user_id"]) for user in response.data]
|
||||
self.assertCountEqual(
|
||||
user_ids,
|
||||
[
|
||||
TEST_TRAINER1_USER_ID,
|
||||
TEST_STUDENT1_USER_ID,
|
||||
TEST_STUDENT2_USER_ID,
|
||||
TEST_STUDENT3_USER_ID,
|
||||
],
|
||||
)
|
||||
user1_index = user_ids.index(TEST_STUDENT1_USER_ID)
|
||||
self.assertEqual(
|
||||
response.data[user1_index]["course_sessions"][0]["id"],
|
||||
str(CourseSession.objects.get(id=TEST_COURSE_SESSION_BERN_ID).id),
|
||||
)
|
||||
|
||||
def test_get_course_sessions_with_roles_for_supervisor(self):
|
||||
supervisor = User.objects.get(id=TEST_SUPERVISOR1_USER_ID)
|
||||
self.client.force_login(supervisor)
|
||||
|
||||
url = reverse(
|
||||
"get_dashboard_persons",
|
||||
)
|
||||
|
||||
response = self.client.get(url)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(len(response.data), 5)
|
||||
user_ids = [str(user["user_id"]) for user in response.data]
|
||||
self.assertCountEqual(
|
||||
user_ids,
|
||||
[
|
||||
TEST_TRAINER1_USER_ID,
|
||||
TEST_STUDENT1_USER_ID,
|
||||
TEST_STUDENT2_USER_ID,
|
||||
TEST_STUDENT3_USER_ID,
|
||||
TEST_TRAINER2_USER_ID,
|
||||
],
|
||||
)
|
||||
user2_index = user_ids.index(TEST_STUDENT2_USER_ID)
|
||||
user2_cs = response.data[user2_index]["course_sessions"]
|
||||
self.assertEqual(len(user2_cs), 2)
|
||||
|
||||
user2_cs_ids = [cs["id"] for cs in user2_cs]
|
||||
self.assertCountEqual(
|
||||
user2_cs_ids,
|
||||
[str(TEST_COURSE_SESSION_ZURICH_ID), str(TEST_COURSE_SESSION_BERN_ID)],
|
||||
)
|
||||
|
|
|
|||
|
|
@ -173,6 +173,7 @@ def _create_person_list_with_roles(user):
|
|||
"email": user_object.email,
|
||||
"avatar_url_small": user_object.avatar_url_small,
|
||||
"avatar_url": user_object.avatar_url,
|
||||
"course_sessions": [],
|
||||
}
|
||||
|
||||
course_sessions = get_course_sessions_with_roles_for_user(user)
|
||||
|
|
@ -185,10 +186,12 @@ def _create_person_list_with_roles(user):
|
|||
)
|
||||
my_role = user_role(cs.roles)
|
||||
for csu in course_session_users:
|
||||
person_data = create_user_dict(csu.user)
|
||||
person_data["course_sessions"] = [
|
||||
person_data = result_persons.get(
|
||||
csu.user.id, create_user_dict(csu.user)
|
||||
)
|
||||
person_data["course_sessions"].append(
|
||||
_create_course_session_dict(cs, my_role, csu.role)
|
||||
]
|
||||
)
|
||||
result_persons[csu.user.id] = person_data
|
||||
|
||||
# add persons where request.user is mentor
|
||||
|
|
|
|||
Loading…
Reference in New Issue