Fix unit tests
This commit is contained in:
parent
733063399f
commit
0444658ce3
|
|
@ -81,7 +81,11 @@ const feedbackSubmitted = ref(false);
|
||||||
|
|
||||||
const { executeMutation } = useMutation(sendFeedbackMutation);
|
const { executeMutation } = useMutation(sendFeedbackMutation);
|
||||||
|
|
||||||
const feedbackData = reactive({
|
interface FeedbackData {
|
||||||
|
[key: string]: number | string | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const feedbackData: FeedbackData = reactive({
|
||||||
satisfaction: null,
|
satisfaction: null,
|
||||||
goal_attainment: null,
|
goal_attainment: null,
|
||||||
proficiency: null,
|
proficiency: null,
|
||||||
|
|
@ -166,7 +170,7 @@ function hasStepValidInput(stepNumber: number) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function mutateFeedback(data, submit = false) {
|
function mutateFeedback(data: FeedbackData, submit = false) {
|
||||||
log.debug("mutate feedback", feedbackData);
|
log.debug("mutate feedback", feedbackData);
|
||||||
return executeMutation({
|
return executeMutation({
|
||||||
courseSessionId: courseSession.value.id.toString(),
|
courseSessionId: courseSession.value.id.toString(),
|
||||||
|
|
@ -236,12 +240,15 @@ onMounted(async () => {
|
||||||
{{ stepLabels[stepNo] }}
|
{{ stepLabels[stepNo] }}
|
||||||
</p>
|
</p>
|
||||||
<div v-for="(question, index) in questionData" :key="index">
|
<div v-for="(question, index) in questionData" :key="index">
|
||||||
|
<!-- eslint-disable -->
|
||||||
|
<!-- eslint does not like the dynamic v-model... -->
|
||||||
<component
|
<component
|
||||||
:is="question.component"
|
:is="question.component"
|
||||||
v-if="index + 1 === stepNo"
|
v-if="index + 1 === stepNo"
|
||||||
v-model="feedbackData[question.modelKey]"
|
v-model="feedbackData[question.modelKey] as any"
|
||||||
:items="question['items']"
|
:items="question['items']"
|
||||||
/>
|
/>
|
||||||
|
<!-- eslint-enable -->
|
||||||
</div>
|
</div>
|
||||||
<FeedbackCompletition
|
<FeedbackCompletition
|
||||||
v-if="stepNo === 11"
|
v-if="stepNo === 11"
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ interface Props {
|
||||||
showStartButton: boolean;
|
showStartButton: boolean;
|
||||||
showPreviousButton: boolean;
|
showPreviousButton: boolean;
|
||||||
showNextButton: boolean;
|
showNextButton: boolean;
|
||||||
disableNextButton: boolean;
|
disableNextButton?: boolean;
|
||||||
showExitButton: boolean;
|
showExitButton: boolean;
|
||||||
currentStep: number;
|
currentStep: number;
|
||||||
stepsCount: number;
|
stepsCount: number;
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ ADMIN_USER_ID = "872efd96-3bd7-4a1e-a239-2d72cad9f604"
|
||||||
TEST_TRAINER1_USER_ID = "b9e71f59-c44f-4290-b93a-9b3151e9a2fc"
|
TEST_TRAINER1_USER_ID = "b9e71f59-c44f-4290-b93a-9b3151e9a2fc"
|
||||||
TEST_STUDENT1_USER_ID = "65c73ad0-6d53-43a9-a4a4-64143f27b03a"
|
TEST_STUDENT1_USER_ID = "65c73ad0-6d53-43a9-a4a4-64143f27b03a"
|
||||||
TEST_STUDENT2_USER_ID = "19c40d94-15cc-4198-aaad-ef707c4b0900"
|
TEST_STUDENT2_USER_ID = "19c40d94-15cc-4198-aaad-ef707c4b0900"
|
||||||
|
TEST_STUDENT3_USER_ID = "bcf94dba-53bc-474b-a22d-e4af39aa042b"
|
||||||
|
|
||||||
TEST_COURSE_SESSION_BERN_ID = -1
|
TEST_COURSE_SESSION_BERN_ID = -1
|
||||||
TEST_COURSE_SESSION_ZURICH_ID = -2
|
TEST_COURSE_SESSION_ZURICH_ID = -2
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ from vbv_lernwelt.core.constants import (
|
||||||
ADMIN_USER_ID,
|
ADMIN_USER_ID,
|
||||||
TEST_STUDENT1_USER_ID,
|
TEST_STUDENT1_USER_ID,
|
||||||
TEST_STUDENT2_USER_ID,
|
TEST_STUDENT2_USER_ID,
|
||||||
|
TEST_STUDENT3_USER_ID,
|
||||||
TEST_TRAINER1_USER_ID,
|
TEST_TRAINER1_USER_ID,
|
||||||
)
|
)
|
||||||
from vbv_lernwelt.core.models import User
|
from vbv_lernwelt.core.models import User
|
||||||
|
|
@ -284,6 +285,13 @@ def create_default_users(user_model=User, group_model=Group, default_password=No
|
||||||
last_name="Student2",
|
last_name="Student2",
|
||||||
avatar_url="/static/avatars/uk1.lina.egger.jpg",
|
avatar_url="/static/avatars/uk1.lina.egger.jpg",
|
||||||
)
|
)
|
||||||
|
_create_student_user(
|
||||||
|
id=TEST_STUDENT3_USER_ID,
|
||||||
|
email="test-student3@example.com",
|
||||||
|
first_name="Test",
|
||||||
|
last_name="Student3",
|
||||||
|
avatar_url="/static/avatars/uk1.christian.koller.jpg",
|
||||||
|
)
|
||||||
_create_staff_user(
|
_create_staff_user(
|
||||||
email="matthias.wirth@vbv-afa.ch",
|
email="matthias.wirth@vbv-afa.ch",
|
||||||
first_name="Matthias",
|
first_name="Matthias",
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,7 @@
|
||||||
from unittest import skip
|
|
||||||
|
|
||||||
from rest_framework.test import APITestCase
|
from rest_framework.test import APITestCase
|
||||||
|
|
||||||
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
|
||||||
from vbv_lernwelt.course.consts import COURSE_TEST_ID
|
|
||||||
from vbv_lernwelt.course.creators.test_course import create_test_course
|
from vbv_lernwelt.course.creators.test_course import create_test_course
|
||||||
from vbv_lernwelt.course.models import CourseSession, CourseSessionUser
|
from vbv_lernwelt.course.models import CourseSession, CourseSessionUser
|
||||||
from vbv_lernwelt.feedback.factories import FeedbackResponseFactory
|
from vbv_lernwelt.feedback.factories import FeedbackResponseFactory
|
||||||
|
|
@ -17,70 +14,35 @@ from vbv_lernwelt.notify.models import (
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class FeedbackApiBaseTestCase(APITestCase):
|
class FeedbackBaseTestCase(APITestCase):
|
||||||
def setUp(self) -> None:
|
def setUp(self) -> None:
|
||||||
create_default_users()
|
create_default_users()
|
||||||
create_test_course()
|
create_test_course(include_vv=False, with_sessions=True)
|
||||||
|
self.course_session = CourseSession.objects.get(title="Test Bern 2022 a")
|
||||||
self.user = User.objects.get(username="student")
|
self.trainer = User.objects.get(username="test-trainer1@example.com")
|
||||||
self.expert = User.objects.get(
|
self.student = User.objects.get(username="test-student1@example.com")
|
||||||
username="patrizia.huggel@eiger-versicherungen.ch"
|
self.circle_basis = Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug")
|
||||||
)
|
|
||||||
|
|
||||||
self.course_session = CourseSession.objects.create(
|
|
||||||
course_id=COURSE_TEST_ID,
|
|
||||||
title="Test Lehrgang Session",
|
|
||||||
)
|
|
||||||
|
|
||||||
csu = CourseSessionUser.objects.create(
|
|
||||||
course_session=self.course_session,
|
|
||||||
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
|
|
||||||
role=CourseSessionUser.Role.EXPERT,
|
|
||||||
)
|
|
||||||
csu.expert.add(Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug"))
|
|
||||||
|
|
||||||
_csu = CourseSessionUser.objects.create(
|
|
||||||
course_session=self.course_session,
|
|
||||||
user=self.user,
|
|
||||||
role=CourseSessionUser.Role.MEMBER,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.test_data = {
|
|
||||||
"file_name": "test.pdf",
|
|
||||||
"file_type": "application/pdf",
|
|
||||||
"name": "Test",
|
|
||||||
"course_session": self.course_session.id,
|
|
||||||
}
|
|
||||||
|
|
||||||
self.client.login(
|
|
||||||
username="patrizia.huggel@eiger-versicherungen.ch", password="myvbv1234"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class FeedbackSummaryApiTestCase(FeedbackApiBaseTestCase):
|
class FeedbackNotificationTestCase(FeedbackBaseTestCase):
|
||||||
def test_triggers_notification(self):
|
def test_creating_submitted_feedback_triggers_notification(self):
|
||||||
expert = User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch")
|
|
||||||
csu = CourseSessionUser.objects.get(
|
|
||||||
course_session=self.course_session,
|
|
||||||
user=expert,
|
|
||||||
role=CourseSessionUser.Role.EXPERT,
|
|
||||||
)
|
|
||||||
basis_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-reisen")
|
|
||||||
csu.expert.add(basis_circle)
|
|
||||||
|
|
||||||
feedback = FeedbackResponse.objects.create(
|
feedback = FeedbackResponse.objects.create(
|
||||||
circle=basis_circle, course_session=csu.course_session
|
circle=self.circle_basis,
|
||||||
|
course_session=self.course_session,
|
||||||
|
feedback_user=self.student,
|
||||||
|
submitted=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
self.assertEqual(Notification.objects.count(), 1)
|
self.assertEqual(Notification.objects.count(), 1)
|
||||||
notification = Notification.objects.first()
|
notification = Notification.objects.first()
|
||||||
self.assertEqual(notification.recipient, expert)
|
self.assertEqual(notification.recipient, self.trainer)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
notification.verb, f"Feedback abgeschickt für Circle «{basis_circle.title}»"
|
notification.verb,
|
||||||
|
f"Feedback abgeschickt für Circle «{self.circle_basis.title}»",
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
notification.target_url,
|
notification.target_url,
|
||||||
f"/course/{self.course_session.course.slug}/cockpit/feedback/{basis_circle.id}/",
|
f"/course/{self.course_session.course.slug}/cockpit/feedback/{self.circle_basis.id}/",
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
notification.notification_category, NotificationCategory.INFORMATION
|
notification.notification_category, NotificationCategory.INFORMATION
|
||||||
|
|
@ -89,121 +51,22 @@ class FeedbackSummaryApiTestCase(FeedbackApiBaseTestCase):
|
||||||
notification.notification_trigger, NotificationTrigger.NEW_FEEDBACK
|
notification.notification_trigger, NotificationTrigger.NEW_FEEDBACK
|
||||||
)
|
)
|
||||||
self.assertEqual(notification.action_object, feedback)
|
self.assertEqual(notification.action_object, feedback)
|
||||||
self.assertEqual(notification.course_session, csu.course_session)
|
self.assertEqual(notification.course_session, self.course_session)
|
||||||
|
|
||||||
def test_triggers_notification_only_on_create(self):
|
def test_only_submitted_feedback_triggers_notification(self):
|
||||||
expert = User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch")
|
feedback = FeedbackResponse.objects.create(
|
||||||
csu = CourseSessionUser.objects.get(
|
circle=self.circle_basis,
|
||||||
course_session=self.course_session,
|
course_session=self.course_session,
|
||||||
user=expert,
|
feedback_user=self.student,
|
||||||
role=CourseSessionUser.Role.EXPERT,
|
|
||||||
)
|
|
||||||
basis_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-reisen")
|
|
||||||
csu.expert.add(basis_circle)
|
|
||||||
|
|
||||||
feedback = FeedbackResponseFactory(
|
|
||||||
circle=basis_circle, course_session=csu.course_session
|
|
||||||
)
|
|
||||||
feedback.save()
|
|
||||||
|
|
||||||
# Check that the initial notification was created and then deleted
|
|
||||||
self.assertEqual(len(Notification.objects.all()), 1)
|
|
||||||
Notification.objects.all().delete()
|
|
||||||
self.assertEqual(len(Notification.objects.all()), 0)
|
|
||||||
|
|
||||||
# Check that an update of the feedback does not trigger a notification
|
|
||||||
feedback.name = "Test2"
|
|
||||||
feedback.save()
|
|
||||||
self.assertEqual(len(Notification.objects.all()), 0)
|
|
||||||
|
|
||||||
def test_can_get_feedback_summary_for_circles(self):
|
|
||||||
number_reisen_feedback = 5
|
|
||||||
number_fahrzeug_feedback = 10
|
|
||||||
|
|
||||||
csu = CourseSessionUser.objects.get(
|
|
||||||
course_session=self.course_session,
|
|
||||||
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
|
|
||||||
role=CourseSessionUser.Role.EXPERT,
|
|
||||||
)
|
|
||||||
fahrzeug_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug")
|
|
||||||
reisen_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-reisen")
|
|
||||||
csu.expert.add(reisen_circle)
|
|
||||||
|
|
||||||
for i in range(number_reisen_feedback):
|
|
||||||
FeedbackResponseFactory(
|
|
||||||
circle=reisen_circle, course_session=csu.course_session
|
|
||||||
).save()
|
|
||||||
|
|
||||||
for i in range(number_fahrzeug_feedback):
|
|
||||||
FeedbackResponseFactory(
|
|
||||||
circle=fahrzeug_circle, course_session=csu.course_session
|
|
||||||
).save()
|
|
||||||
|
|
||||||
response = self.client.get(
|
|
||||||
f"/api/core/feedback/{csu.course_session.id}/summary/"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(Notification.objects.count(), 0)
|
||||||
expected = [
|
|
||||||
{"circle_id": fahrzeug_circle.id, "count": number_fahrzeug_feedback},
|
|
||||||
{"circle_id": reisen_circle.id, "count": number_reisen_feedback},
|
|
||||||
]
|
|
||||||
self.assertEqual(response.data, expected)
|
|
||||||
|
|
||||||
@skip("For now every trainer can see all feedback from the same course session")
|
|
||||||
def test_can_only_see_feedback_from_own_circle(self):
|
|
||||||
number_basis_feedback = 5
|
|
||||||
number_analyse_feedback = 10
|
|
||||||
|
|
||||||
csu = CourseSessionUser.objects.get(
|
|
||||||
course_session=self.course_session,
|
|
||||||
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
|
|
||||||
role=CourseSessionUser.Role.EXPERT,
|
|
||||||
)
|
|
||||||
fahrzeug_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug")
|
|
||||||
reisen_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-reisen")
|
|
||||||
|
|
||||||
for i in range(number_basis_feedback):
|
|
||||||
FeedbackResponseFactory(
|
|
||||||
circle=reisen_circle, course_session=csu.course_session
|
|
||||||
).save()
|
|
||||||
|
|
||||||
for i in range(number_analyse_feedback):
|
|
||||||
FeedbackResponseFactory(
|
|
||||||
circle=fahrzeug_circle, course_session=csu.course_session
|
|
||||||
).save()
|
|
||||||
|
|
||||||
response = self.client.get(
|
|
||||||
f"/api/core/feedback/{csu.course_session.id}/summary/"
|
|
||||||
)
|
|
||||||
|
|
||||||
self.assertEqual(response.status_code, 200)
|
|
||||||
expected = [
|
|
||||||
{"circle_id": fahrzeug_circle.id, "count": number_analyse_feedback},
|
|
||||||
]
|
|
||||||
self.assertEqual(response.data, expected)
|
|
||||||
|
|
||||||
def test_student_does_not_see_feedback(self):
|
|
||||||
self.client.login(username="student", password="test")
|
|
||||||
csu = CourseSessionUser.objects.get(
|
|
||||||
course_session=self.course_session,
|
|
||||||
user=self.user,
|
|
||||||
)
|
|
||||||
fahrzeug_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug")
|
|
||||||
FeedbackResponseFactory(
|
|
||||||
circle=fahrzeug_circle, course_session=csu.course_session
|
|
||||||
).save()
|
|
||||||
|
|
||||||
response = self.client.get(
|
|
||||||
f"/api/core/feedback/{csu.course_session.id}/summary/"
|
|
||||||
)
|
|
||||||
|
|
||||||
self.assertEqual(response.status_code, 403)
|
|
||||||
|
|
||||||
|
|
||||||
class FeedbackDetailApiTestCase(FeedbackApiBaseTestCase):
|
class FeedbackRestApiTestCase(FeedbackBaseTestCase):
|
||||||
def test_can_receive_feedback(self):
|
def setUp(self) -> None:
|
||||||
feedback_data = {
|
super().setUp()
|
||||||
|
self.feedback_data = {
|
||||||
"satisfaction": [1, 4, 2],
|
"satisfaction": [1, 4, 2],
|
||||||
"goal_attainment": [2, 4, 3],
|
"goal_attainment": [2, 4, 3],
|
||||||
"proficiency": [20, 60, 80],
|
"proficiency": [20, 60, 80],
|
||||||
|
|
@ -215,81 +78,83 @@ class FeedbackDetailApiTestCase(FeedbackApiBaseTestCase):
|
||||||
"course_positive_feedback": ["Bla", "Katze", "Hund"],
|
"course_positive_feedback": ["Bla", "Katze", "Hund"],
|
||||||
"course_negative_feedback": ["Maus", "Hase", "Fuchs"],
|
"course_negative_feedback": ["Maus", "Hase", "Fuchs"],
|
||||||
}
|
}
|
||||||
csu = CourseSessionUser.objects.get(
|
|
||||||
course_session=self.course_session,
|
self.students = [
|
||||||
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
|
self.student,
|
||||||
role=CourseSessionUser.Role.EXPERT,
|
User.objects.get(username="test-student2@example.com"),
|
||||||
)
|
User.objects.get(username="test-student3@example.com"),
|
||||||
circle = Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug")
|
]
|
||||||
|
|
||||||
for i in range(3):
|
for i in range(3):
|
||||||
FeedbackResponseFactory(
|
FeedbackResponseFactory(
|
||||||
circle=circle,
|
circle=self.circle_basis,
|
||||||
course_session=csu.course_session,
|
course_session=self.course_session,
|
||||||
data={
|
data={
|
||||||
"satisfaction": feedback_data["satisfaction"][i],
|
"satisfaction": self.feedback_data["satisfaction"][i],
|
||||||
"goal_attainment": feedback_data["goal_attainment"][i],
|
"goal_attainment": self.feedback_data["goal_attainment"][i],
|
||||||
"proficiency": feedback_data["proficiency"][i],
|
"proficiency": self.feedback_data["proficiency"][i],
|
||||||
"preparation_task_clarity": feedback_data[
|
"preparation_task_clarity": self.feedback_data[
|
||||||
"preparation_task_clarity"
|
"preparation_task_clarity"
|
||||||
][i],
|
][i],
|
||||||
"instructor_competence": feedback_data["instructor_competence"][i],
|
"instructor_competence": self.feedback_data[
|
||||||
"instructor_open_feedback": feedback_data[
|
"instructor_competence"
|
||||||
|
][i],
|
||||||
|
"instructor_open_feedback": self.feedback_data[
|
||||||
"instructor_open_feedback"
|
"instructor_open_feedback"
|
||||||
][i],
|
][i],
|
||||||
"would_recommend": feedback_data["would_recommend"][i],
|
"would_recommend": self.feedback_data["would_recommend"][i],
|
||||||
"instructor_respect": feedback_data["instructor_respect"][i],
|
"instructor_respect": self.feedback_data["instructor_respect"][i],
|
||||||
"course_positive_feedback": feedback_data[
|
"course_positive_feedback": self.feedback_data[
|
||||||
"course_positive_feedback"
|
"course_positive_feedback"
|
||||||
][i],
|
][i],
|
||||||
"course_negative_feedback": feedback_data[
|
"course_negative_feedback": self.feedback_data[
|
||||||
"course_negative_feedback"
|
"course_negative_feedback"
|
||||||
][i],
|
][i],
|
||||||
},
|
},
|
||||||
).save()
|
feedback_user=self.students[i],
|
||||||
|
submitted=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_detail_trainer_can_fetch_feedback(self):
|
||||||
|
self.client.force_login(self.trainer)
|
||||||
response = self.client.get(
|
response = self.client.get(
|
||||||
f"/api/core/feedback/{csu.course_session.id}/{circle.id}/"
|
f"/api/core/feedback/{self.course_session.id}/{self.circle_basis.id}/"
|
||||||
)
|
)
|
||||||
self.maxDiff = None
|
self.maxDiff = None
|
||||||
|
|
||||||
expected = {
|
expected = {
|
||||||
"amount": 3,
|
"amount": 3,
|
||||||
"questions": feedback_data,
|
"questions": self.feedback_data,
|
||||||
}
|
}
|
||||||
|
print(response.data)
|
||||||
|
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
self.assertDictEqual(response.data, expected)
|
self.assertDictEqual(response.data, expected)
|
||||||
|
|
||||||
@skip("For now every trainer can see all feedback from the same course session")
|
def test_summary_trainer_can_fetch_feedback(self):
|
||||||
def test_cannot_receive_feedback_from_other_circle(self):
|
self.client.force_login(self.trainer)
|
||||||
csu = CourseSessionUser.objects.get(
|
|
||||||
course_session=self.course_session,
|
|
||||||
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
|
|
||||||
role=CourseSessionUser.Role.EXPERT,
|
|
||||||
)
|
|
||||||
|
|
||||||
circle = Circle.objects.get(slug="test-lehrgang-lp-circle-reisen")
|
|
||||||
FeedbackResponseFactory(circle=circle, course_session=csu.course_session).save()
|
|
||||||
|
|
||||||
response = self.client.get(
|
response = self.client.get(
|
||||||
f"/api/core/feedback/{csu.course_session.id}/{circle.id}/"
|
f"/api/core/feedback/{self.course_session.id}/summary/"
|
||||||
)
|
)
|
||||||
|
self.maxDiff = None
|
||||||
|
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
self.assertEqual(response.data, {"amount": 0, "questions": {}})
|
self.assertDictEqual(
|
||||||
|
response.data[0], {"circle_id": self.circle_basis.id, "count": 3}
|
||||||
def test_student_cannot_receive_feedback(self):
|
|
||||||
self.client.login(username="student", password="test")
|
|
||||||
csu = CourseSessionUser.objects.get(
|
|
||||||
course_session=self.course_session,
|
|
||||||
user=self.user,
|
|
||||||
)
|
)
|
||||||
circle = Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug")
|
|
||||||
FeedbackResponseFactory(circle=circle, course_session=csu.course_session).save()
|
|
||||||
|
|
||||||
|
def test_detail_student_cannot_fetch_feedback(self):
|
||||||
|
self.client.force_login(self.student)
|
||||||
response = self.client.get(
|
response = self.client.get(
|
||||||
f"/api/core/feedback/{csu.course_session.id}/{circle.id}/"
|
f"/api/core/feedback/{self.course_session.id}/{self.circle_basis.id}/"
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, 403)
|
||||||
|
|
||||||
|
def test_summary_student_cannot_fetch_feedback(self):
|
||||||
|
self.client.force_login(self.student)
|
||||||
|
response = self.client.get(
|
||||||
|
f"/api/core/feedback/{self.course_session.id}/summary/"
|
||||||
)
|
)
|
||||||
|
|
||||||
self.assertEqual(response.status_code, 403)
|
self.assertEqual(response.status_code, 403)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue