Add serializers for different Feedbacks
This commit is contained in:
parent
fa31def0b5
commit
b1ddedb52a
|
|
@ -5,7 +5,6 @@ describe("feedbackStudent.cy.js", () => {
|
|||
beforeEach(() => {
|
||||
cy.manageCommand("cypress_reset");
|
||||
login("test-student1@example.com", "test");
|
||||
cy.visit("/course/test-lehrgang/learn/fahrzeug/feedback");
|
||||
});
|
||||
|
||||
describe("Feedback UK", () => {
|
||||
|
|
@ -178,8 +177,7 @@ describe("feedbackStudent.cy.js", () => {
|
|||
cy.url().should((url) => {
|
||||
expect(url).to.match(/\/reisen\/feedback(\?step=0)?$/);
|
||||
});
|
||||
cy.get('[data-cy="introduction"]').should(
|
||||
"contain",
|
||||
cy.get('[data-cy="introduction"]').contains(
|
||||
"Wir bitten dich um dein Feedback. Es hilft uns, damit wir deine Lernerlebnisse verbessern können."
|
||||
);
|
||||
|
||||
|
|
@ -204,7 +202,7 @@ describe("feedbackStudent.cy.js", () => {
|
|||
(ac) => {
|
||||
expect(ac.submitted).to.be.false;
|
||||
expect(ac.data.satisfaction).to.equal(4);
|
||||
expect(ac.data.instructor_competence).to.equal(null);
|
||||
expect(ac.data.course_positive_feedback).to.equal(null);
|
||||
}
|
||||
);
|
||||
cy.get('[data-cy="radio-3"]').click();
|
||||
|
|
@ -262,7 +260,7 @@ describe("feedbackStudent.cy.js", () => {
|
|||
|
||||
// marked complete in circle
|
||||
cy.url().should((url) => {
|
||||
expect(url).to.match(/\/reisen#lu-transfer?$/);
|
||||
expect(url).to.match(/\/reisen#lu-transfer-reflexion-feedback?$/);
|
||||
});
|
||||
cy.reload();
|
||||
cy.get(
|
||||
|
|
@ -279,13 +277,12 @@ describe("feedbackStudent.cy.js", () => {
|
|||
expect(ac.submitted).to.be.true;
|
||||
expect(ac.data).to.deep.equal({
|
||||
course_negative_feedback: "Ich bin unzufrieden mit einigen Sachen.",
|
||||
course_positive_feedback:
|
||||
"Ich bin zufrieden mit den meisten Dingen.",
|
||||
course_positive_feedback: "Der Circle ist eigentlich ganz nett.",
|
||||
goal_attainment: 3,
|
||||
preparation_task_clarity: false,
|
||||
proficiency: 80,
|
||||
satisfaction: 4,
|
||||
would_recommend: true,
|
||||
would_recommend: false,
|
||||
});
|
||||
}
|
||||
);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,10 @@ from vbv_lernwelt.course.models import CourseSession
|
|||
from vbv_lernwelt.feedback.graphql.types import (
|
||||
FeedbackResponseObjectType as FeedbackResponseType,
|
||||
)
|
||||
from vbv_lernwelt.feedback.serializers import CourseFeedbackSerializer
|
||||
from vbv_lernwelt.feedback.serializers import (
|
||||
CourseFeedbackSerializerUK,
|
||||
CourseFeedbackSerializerVV,
|
||||
)
|
||||
from vbv_lernwelt.feedback.services import update_feedback_response
|
||||
from vbv_lernwelt.iam.permissions import has_course_session_access
|
||||
from vbv_lernwelt.learnpath.models import (
|
||||
|
|
@ -76,7 +79,17 @@ class SendFeedbackMutation(graphene.Mutation):
|
|||
course_session_id=course_session_id,
|
||||
)
|
||||
|
||||
serializer = CourseFeedbackSerializer(data=data)
|
||||
if learning_content_type == "learnpath.LearningContentFeedbackVV":
|
||||
serializer = CourseFeedbackSerializerVV(data=data)
|
||||
elif learning_content_type == "learnpath.LearningContentFeedbackUK":
|
||||
serializer = CourseFeedbackSerializerUK(data=data)
|
||||
else:
|
||||
errors = [
|
||||
ErrorType(
|
||||
field="learningContentType", messages="Invalid learningContentType"
|
||||
)
|
||||
]
|
||||
return SendFeedbackMutation(errors=errors)
|
||||
|
||||
if not serializer.is_valid():
|
||||
logger.error(
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ class FeedbackIntegerField(serializers.IntegerField):
|
|||
)
|
||||
|
||||
|
||||
class CourseFeedbackSerializer(serializers.Serializer):
|
||||
class CourseFeedbackSerializerUK(serializers.Serializer):
|
||||
satisfaction = FeedbackIntegerField()
|
||||
goal_attainment = FeedbackIntegerField()
|
||||
proficiency = serializers.IntegerField(required=False, allow_null=True)
|
||||
|
|
@ -33,6 +33,21 @@ class CourseFeedbackSerializer(serializers.Serializer):
|
|||
)
|
||||
|
||||
|
||||
class CourseFeedbackSerializerVV(serializers.Serializer):
|
||||
satisfaction = FeedbackIntegerField()
|
||||
goal_attainment = FeedbackIntegerField()
|
||||
proficiency = serializers.IntegerField(required=False, allow_null=True)
|
||||
preparation_task_clarity = serializers.BooleanField(required=False, allow_null=True)
|
||||
materials_rating = FeedbackIntegerField()
|
||||
would_recommend = serializers.BooleanField(required=False, allow_null=True)
|
||||
course_positive_feedback = serializers.CharField(
|
||||
required=False, allow_null=True, allow_blank=True
|
||||
)
|
||||
course_negative_feedback = serializers.CharField(
|
||||
required=False, allow_null=True, allow_blank=True
|
||||
)
|
||||
|
||||
|
||||
class CypressFeedbackResponseSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = FeedbackResponse
|
||||
|
|
|
|||
|
|
@ -33,18 +33,7 @@ def update_feedback_response(
|
|||
|
||||
original_data = feedback_response.data
|
||||
updated_data = validated_data
|
||||
initial_data = {
|
||||
"satisfaction": None,
|
||||
"goal_attainment": None,
|
||||
"proficiency": None,
|
||||
"preparation_task_clarity": None,
|
||||
"instructor_competence": None,
|
||||
"instructor_respect": None,
|
||||
"instructor_open_feedback": "",
|
||||
"would_recommend": None,
|
||||
"course_negative_feedback": "",
|
||||
"course_positive_feedback": "",
|
||||
}
|
||||
initial_data = initial_data_for_feedback_page(learning_content_feedback_page)
|
||||
|
||||
merged_data = initial_data | {
|
||||
key: updated_data[key]
|
||||
|
|
@ -78,3 +67,34 @@ def update_feedback_response(
|
|||
)
|
||||
|
||||
return feedback_response
|
||||
|
||||
|
||||
def initial_data_for_feedback_page(
|
||||
learning_content_feedback_page: Union[
|
||||
LearningContentFeedbackUK, LearningContentFeedbackVV
|
||||
]
|
||||
):
|
||||
if hasattr(learning_content_feedback_page, "learningcontentfeedbackuk"):
|
||||
return {
|
||||
"satisfaction": None,
|
||||
"goal_attainment": None,
|
||||
"proficiency": None,
|
||||
"preparation_task_clarity": None,
|
||||
"instructor_competence": None,
|
||||
"instructor_respect": None,
|
||||
"instructor_open_feedback": "",
|
||||
"would_recommend": None,
|
||||
"course_negative_feedback": "",
|
||||
"course_positive_feedback": "",
|
||||
}
|
||||
if hasattr(learning_content_feedback_page, "learningcontentfeedbackvv"):
|
||||
return {
|
||||
"satisfaction": None,
|
||||
"goal_attainment": None,
|
||||
"proficiency": None,
|
||||
"preparation_task_clarity": None,
|
||||
"would_recommend": None,
|
||||
"course_negative_feedback": "",
|
||||
"course_positive_feedback": "",
|
||||
}
|
||||
return {}
|
||||
|
|
|
|||
Loading…
Reference in New Issue