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.test import TestCase
|
||||||
|
from django.urls import reverse
|
||||||
|
from rest_framework.test import APITestCase
|
||||||
|
|
||||||
from vbv_lernwelt.assignment.models import (
|
from vbv_lernwelt.assignment.models import (
|
||||||
Assignment,
|
Assignment,
|
||||||
|
|
@ -9,7 +11,11 @@ from vbv_lernwelt.core.constants import (
|
||||||
TEST_COURSE_SESSION_BERN_ID,
|
TEST_COURSE_SESSION_BERN_ID,
|
||||||
TEST_COURSE_SESSION_ZURICH_ID,
|
TEST_COURSE_SESSION_ZURICH_ID,
|
||||||
TEST_STUDENT1_USER_ID,
|
TEST_STUDENT1_USER_ID,
|
||||||
|
TEST_STUDENT2_USER_ID,
|
||||||
|
TEST_STUDENT3_USER_ID,
|
||||||
TEST_SUPERVISOR1_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.create_default_users import create_default_users
|
||||||
from vbv_lernwelt.core.models import User
|
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])],
|
[(TEST_COURSE_SESSION_ZURICH_ID, [circle_fahrzeug.id, circle_reisen.id])],
|
||||||
allowed_circles,
|
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,
|
"email": user_object.email,
|
||||||
"avatar_url_small": user_object.avatar_url_small,
|
"avatar_url_small": user_object.avatar_url_small,
|
||||||
"avatar_url": user_object.avatar_url,
|
"avatar_url": user_object.avatar_url,
|
||||||
|
"course_sessions": [],
|
||||||
}
|
}
|
||||||
|
|
||||||
course_sessions = get_course_sessions_with_roles_for_user(user)
|
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)
|
my_role = user_role(cs.roles)
|
||||||
for csu in course_session_users:
|
for csu in course_session_users:
|
||||||
person_data = create_user_dict(csu.user)
|
person_data = result_persons.get(
|
||||||
person_data["course_sessions"] = [
|
csu.user.id, create_user_dict(csu.user)
|
||||||
|
)
|
||||||
|
person_data["course_sessions"].append(
|
||||||
_create_course_session_dict(cs, my_role, csu.role)
|
_create_course_session_dict(cs, my_role, csu.role)
|
||||||
]
|
)
|
||||||
result_persons[csu.user.id] = person_data
|
result_persons[csu.user.id] = person_data
|
||||||
|
|
||||||
# add persons where request.user is mentor
|
# add persons where request.user is mentor
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue