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