import { TEST_STUDENT1_USER_ID } from "../../consts"; import { login } from "../helpers"; describe("assignmentStudent.cy.js", () => { beforeEach(() => { cy.manageCommand("cypress_reset"); login("test-student1@example.com", "test"); cy.visit( "/course/test-lehrgang/learn/fahrzeug/überprüfen-einer-motorfahrzeug-versicherungspolice" ); }); it("can open assignment", () => { cy.testLearningContentTitle("Einleitung"); cy.testLearningContentSubtitle( "Überprüfen einer Motorfahrzeugs-Versicherungspolice" ); }); it("can navigate through assignment", () => { // 1 Step forward cy.learningContentMultiLayoutNextStep(); cy.testLearningContentTitle( "Teilaufgabe 1: Beispiel einer Versicherungspolice finden" ); cy.learningContentMultiLayoutNextStep(); cy.testLearningContentTitle( "Teilaufgabe 2: Kundensituation und Ausgangslage" ); cy.learningContentMultiLayoutNextStep(); cy.testLearningContentTitle("Teilaufgabe 3: Aktuelle Versicherung"); cy.learningContentMultiLayoutPreviousStep(); cy.testLearningContentTitle( "Teilaufgabe 2: Kundensituation und Ausgangslage" ); }); it("can save confirmation", () => { // 1 Step forward cy.learningContentMultiLayoutNextStep(); cy.testLearningContentTitle( "Teilaufgabe 1: Beispiel einer Versicherungspolice finden" ); // Click confirmation cy.get('[data-cy="it-checkbox-confirmation-1"]').click(); cy.reload(); cy.get('[data-cy="it-checkbox-confirmation-1"]').should( "have.class", "cy-checked" ); }); it("can save text", () => { // 2 Steps forward cy.learningContentMultiLayoutNextStep(); cy.learningContentMultiLayoutNextStep(); cy.testLearningContentTitle( "Teilaufgabe 2: Kundensituation und Ausgangslage" ); // Enter text cy.get('[data-cy="it-textarea-user-text-input-1"]') .clear() .type("Hallovelo"); // wait because of input debounce cy.wait(550); cy.reload(); cy.get('[data-cy="it-textarea-user-text-input-1"]').should( "have.value", "Hallovelo" ); }); it("can visit sub step directly via url", () => { cy.visit( "/course/test-lehrgang/learn/fahrzeug/überprüfen-einer-motorfahrzeug-versicherungspolice?step=3" ); cy.testLearningContentTitle("Teilaufgabe 3: Aktuelle Versicherung"); }); it("can visit sub step by clicking navigation bar", () => { cy.get('[data-cy="nav-progress-step-4"]').click(); cy.testLearningContentTitle("Teilaufgabe 4: Deine Empfehlungen"); }); it("can submit assignment", () => { cy.visit( "/course/test-lehrgang/learn/fahrzeug/überprüfen-einer-motorfahrzeug-versicherungspolice?step=7" ); cy.get('[data-cy="confirm-submit-results"]').click(); cy.get('[data-cy="confirm-submit-person"]').click(); cy.get('[data-cy="submit-assignment"]').click(); cy.get('[data-cy="success-text"]').should("exist"); // Check if trainer received notification cy.clearLocalStorage(); cy.clearCookies(); cy.reload(true); login("test-trainer1@example.com", "test"); cy.visit("/notifications"); cy.get(`[data-cy=notification-idx-0]`).within(() => { cy.get('[data-cy="unread"]').should("exist"); cy.get('[data-cy="notification-target-idx-0-verb"]').contains( "Test Student1 hat die geleitete Fallarbeit «Überprüfen einer Motorfahrzeugs-Versicherungspolice» abgegeben." ); }); }); it("can make complete assignment", () => { cy.learningContentMultiLayoutNextStep(); cy.testLearningContentTitle( "Teilaufgabe 1: Beispiel einer Versicherungspolice finden" ); // Click confirmation cy.get('[data-cy="it-checkbox-confirmation-1"]').click(); cy.learningContentMultiLayoutNextStep(); // step 2 cy.testLearningContentTitle( "Teilaufgabe 2: Kundensituation und Ausgangslage" ); cy.get('[data-cy="it-textarea-user-text-input-1"]') .clear() .type("Hallo Teilaufgabe 2"); // wait because of input debounce cy.wait(550); cy.learningContentMultiLayoutNextStep(); // check that results are stored on server // load AssignmentCompletion from DB and check cy.loadAssignmentCompletion( "assignment_user_id", TEST_STUDENT1_USER_ID ).then((ac) => { expect(ac.completion_status).to.equal("IN_PROGRESS"); expect(JSON.stringify(ac.completion_data)).to.include( "Hallo Teilaufgabe 2" ); }); // step 3 cy.testLearningContentTitle("Teilaufgabe 3: Aktuelle Versicherung"); cy.get('[data-cy="it-textarea-user-text-input-1"]') .clear() .type("Hallo Teilaufgabe 3"); // wait because of input debounce cy.wait(550); cy.learningContentMultiLayoutNextStep(); // step 4 cy.testLearningContentTitle("Teilaufgabe 4: Deine Empfehlungen"); cy.get('[data-cy="it-textarea-user-text-input-1"]') .clear() .type("Hallo Teilaufgabe 4.1"); cy.wait(550); cy.get('[data-cy="it-textarea-user-text-input-2"]') .clear() .type("Hallo Teilaufgabe 4.2"); cy.wait(550); cy.get('[data-cy="it-textarea-user-text-input-3"]') .clear() .type("Hallo Teilaufgabe 4.3"); // wait because of input debounce cy.wait(550); cy.learningContentMultiLayoutNextStep(); // step 5 cy.testLearningContentTitle("Teilaufgabe 5: Reflexion"); cy.get('[data-cy="it-textarea-user-text-input-1"]') .clear() .type("Hallo Teilaufgabe 5.1"); cy.wait(550); cy.get('[data-cy="it-textarea-user-text-input-2"]') .clear() .type("Hallo Teilaufgabe 5.2"); cy.wait(550); cy.get('[data-cy="it-textarea-user-text-input-3"]') .clear() .type("Hallo Teilaufgabe 5.3"); // wait because of input debounce cy.wait(550); cy.learningContentMultiLayoutNextStep(); // step 6 cy.testLearningContentTitle("Teilaufgabe 6: Learnings"); cy.get('[data-cy="it-textarea-user-text-input-1"]') .clear() .type("Hallo Teilaufgabe 6.1"); cy.wait(550); cy.get('[data-cy="it-textarea-user-text-input-2"]') .clear() .type("Hallo Teilaufgabe 6.2"); // wait because of input debounce cy.wait(550); cy.learningContentMultiLayoutNextStep(); cy.get('[data-cy="confirm-submit-results"]').click(); cy.get('[data-cy="confirm-submit-person"]').click(); cy.get('[data-cy="submit-assignment"]').click(); cy.get('[data-cy="success-text"]').should("exist"); // app goes back to circle view -> check if assignment is marked as completed cy.url().should((url) => { expect(url).to.match(/\/fahrzeug#lu-transfer?$/); }); cy.reload(); cy.get( '[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice-checkbox"]' ).should("have.class", "cy-checked"); // reopening page should get directly to last step cy.visit( "/course/test-lehrgang/learn/fahrzeug/überprüfen-einer-motorfahrzeug-versicherungspolice" ); cy.url().should("include", "step=7"); // load AssignmentCompletion from DB and check cy.loadAssignmentCompletion( "assignment_user_id", TEST_STUDENT1_USER_ID ).then((ac) => { expect(ac.completion_status).to.equal("SUBMITTED"); expect(ac.evaluation_max_points).to.equal(24); const completionString = JSON.stringify(ac.completion_data); console.log(completionString); expect(completionString).to.include("Hallo Teilaufgabe 2"); expect(completionString).to.include("Hallo Teilaufgabe 3"); expect(completionString).to.include("Hallo Teilaufgabe 4.1"); expect(completionString).to.include("Hallo Teilaufgabe 4.2"); expect(completionString).to.include("Hallo Teilaufgabe 4.3"); expect(completionString).to.include("Hallo Teilaufgabe 5.1"); expect(completionString).to.include("Hallo Teilaufgabe 5.2"); expect(completionString).to.include("Hallo Teilaufgabe 5.3"); expect(completionString).to.include("Hallo Teilaufgabe 6.1"); expect(completionString).to.include("Hallo Teilaufgabe 6.2"); }); }); });