import { userExample } from "../../../fixtures/users/user" import { postUsersSignupHandler, postUsersSignupAlreadyUsedHandler, } from "../../../fixtures/users/signup/post" describe("Pages > /authentication/signup", () => { beforeEach(() => { cy.task("stopMockServer") cy.visit("/authentication/signup") }) it("should succeeds and sign up the user", () => { cy.task("startMockServer", [postUsersSignupHandler]) cy.get("#error-name").should("not.exist") cy.get("#error-email").should("not.exist") cy.get("#error-password").should("not.exist") cy.get("[data-cy=input-name]").type(userExample.name) cy.get("[data-cy=input-email]").type(userExample.email) cy.get("[data-cy=input-password]").type("randompassword") cy.get("[data-cy=submit]").click() cy.get("#message").should( "have.text", "Success: You're almost there, please check your emails to confirm registration.", ) }) it("should fails with name or email already used", () => { cy.task("startMockServer", [postUsersSignupAlreadyUsedHandler]) cy.get("#error-name").should("not.exist") cy.get("#error-email").should("not.exist") cy.get("#error-password").should("not.exist") cy.get("[data-cy=input-name]").type(userExample.name) cy.get("[data-cy=input-email]").type(userExample.email) cy.get("[data-cy=input-password]").type("randompassword") cy.get("[data-cy=submit]").click() cy.get("#message").should("have.text", "Error: Name or Email already used.") cy.get("#error-name").should("not.exist") cy.get("#error-email").should("not.exist") cy.get("#error-password").should("not.exist") }) it("should fails with unreachable api server", () => { cy.get("#error-name").should("not.exist") cy.get("#error-email").should("not.exist") cy.get("#error-password").should("not.exist") cy.get("[data-cy=input-name]").type(userExample.name) cy.get("[data-cy=input-email]").type(userExample.email) cy.get("[data-cy=input-password]").type("randompassword") cy.get("[data-cy=submit]").click() cy.get("#message").should("have.text", "Error: Internal Server Error.") cy.get("#error-name").should("not.exist") cy.get("#error-email").should("not.exist") cy.get("#error-password").should("not.exist") }) it("should fails with all inputs as required with error messages and update error messages when updating language (translation)", () => { const requiredErrorMessage = { en: "Error: Oops, this field is required 🙈.", fr: "Erreur: Oups, ce champ est obligatoire 🙈.", } cy.get("#error-name").should("not.exist") cy.get("#error-email").should("not.exist") cy.get("#error-password").should("not.exist") cy.get("[data-cy=submit]").click() cy.get("#error-name").should("have.text", requiredErrorMessage.en) cy.get("#error-email").should("have.text", requiredErrorMessage.en) cy.get("#error-password").should("have.text", requiredErrorMessage.en) cy.get("[data-cy=language-click]").click() cy.get("[data-cy=languages-list] > li:first-child").contains("FR").click() cy.get("#error-name").should("have.text", requiredErrorMessage.fr) cy.get("#error-email").should("have.text", requiredErrorMessage.fr) cy.get("#error-password").should("have.text", requiredErrorMessage.fr) }) it("should fails with wrong email format", () => { cy.get("#error-email").should("not.exist") cy.get("[data-cy=input-email]").type("test") cy.get("[data-cy=submit]").click() cy.get("#error-email").should( "have.text", "Error: Mmm… It seems that this email is not valid 🤔.", ) }) }) export {}