import { TEST_STUDENT1_USER_ID } from "../../consts"; import { login } from "../helpers"; describe("feedbackStudent.cy.js", () => { beforeEach(() => { cy.manageCommand("cypress_reset"); login("test-student1@example.com", "test"); cy.visit("/course/test-lehrgang/learn/fahrzeug/feedback"); }); it("can open feedback page", () => { cy.testLearningContentTitle("Kursfeedback"); cy.testLearningContentSubtitle("Feedback"); }); it("can create feedback by giving answers to all steps", () => { // initial wait for step 0 (or none with step==0) is required for pipelines cy.url().should((url) => { expect(url).to.match(/\/fahrzeug\/feedback(\?step=0)?$/); }); cy.wait(200); cy.learningContentMultiLayoutNextStep(); cy.wait(200); // fill feedback form // step 1 cy.url().should("include", "step=1"); cy.get('[data-cy="next-step"]').should("be.disabled"); cy.get('[data-cy="radio-4"]').click(); cy.wait(200); cy.learningContentMultiLayoutNextStep(); cy.wait(200); // step 2 cy.url().should("include", "step=2"); cy.get('[data-cy="next-step"]').should("be.disabled"); // the system should store after every step -> check stored data cy.loadFeedbackResponse("feedback_user_id", TEST_STUDENT1_USER_ID).then( (ac) => { expect(ac.submitted).to.be.false; expect(ac.data.satisfaction).to.equal(4); expect(ac.data.instructor_competence).to.equal(null); } ); cy.get('[data-cy="radio-3"]').click(); cy.wait(200); cy.learningContentMultiLayoutNextStep(); cy.wait(200); // step 3 cy.url().should("include", "step=3"); cy.get('[data-cy="next-step"]').should("be.disabled"); cy.get('[data-cy="radio-80"]').click(); cy.wait(200); cy.learningContentMultiLayoutNextStep(); cy.wait(200); // step 4 cy.url().should("include", "step=4"); cy.get('[data-cy="next-step"]').should("be.disabled"); cy.get('[data-cy="radio-false"]').click(); cy.wait(200); cy.learningContentMultiLayoutNextStep(); cy.wait(200); // step 5 cy.url().should("include", "step=5"); cy.get('[data-cy="next-step"]').should("be.disabled"); cy.get('[data-cy="radio-2"]').click(); cy.wait(200); cy.learningContentMultiLayoutNextStep(); cy.wait(200); // step 6 cy.url().should("include", "step=6"); cy.get('[data-cy="next-step"]').should("be.disabled"); cy.get('[data-cy="radio-1"]').click(); cy.wait(200); cy.learningContentMultiLayoutNextStep(); cy.wait(200); // step 7 cy.url().should("include", "step=7"); cy.get('[data-cy="next-step"]').should("be.disabled"); cy.get('[data-cy="it-textarea-instructor_open_feedback"]').type( "Der Kursleiter ist eigentlich ganz nett." ); cy.wait(200); cy.learningContentMultiLayoutNextStep(); cy.wait(200); // step 8 cy.url().should("include", "step=8"); cy.get('[data-cy="next-step"]').should("be.disabled"); cy.get('[data-cy="radio-true"]').click(); cy.wait(200); cy.learningContentMultiLayoutNextStep(); cy.wait(200); // step 9 cy.url().should("include", "step=9"); cy.get('[data-cy="next-step"]').should("be.disabled"); cy.get('[data-cy="it-textarea-course_positive_feedback"]').type( "Ich bin zufrieden mit den meisten Dingen." ); cy.wait(200); cy.learningContentMultiLayoutNextStep(); cy.wait(200); // step 10 cy.url().should("include", "step=10"); cy.get('[data-cy="next-step"]').should("be.disabled"); cy.get('[data-cy="it-textarea-course_negative_feedback"]').type( "Ich bin unzufrieden mit einigen Sachen." ); cy.wait(200); cy.learningContentMultiLayoutNextStep(); cy.wait(200); cy.url().should("include", "step=11"); cy.get('[data-cy="sendFeedbackButton"]').click(); cy.get('[data-cy="complete-and-continue"]').click({ force: true }); // marked complete in circle cy.url().should((url) => { expect(url).to.match(/\/fahrzeug#lu-transfer?$/); }); cy.reload(); cy.get( '[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-feedback-checkbox"]' ).should("have.class", "cy-checked"); // reopening page should get directly to last step cy.visit("/course/test-lehrgang/learn/fahrzeug/feedback"); cy.url().should("include", "step=11"); // check stored data cy.loadFeedbackResponse("feedback_user_id", TEST_STUDENT1_USER_ID).then( (ac) => { 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.", goal_attainment: 3, instructor_competence: 2, instructor_open_feedback: "Der Kursleiter ist eigentlich ganz nett.", instructor_respect: 1, preparation_task_clarity: false, proficiency: 80, satisfaction: 4, would_recommend: true, }); } ); }); });