describe("Тестирование полей вопросов", () => {
  beforeEach(() => {
    cy.visit("http://localhost:3000");
    cy.wait(1000);
    cy.contains("Регистрация / Войти").click();
    const login = "valid_user@exammple.com";
    const password = "valid_password";

    cy.get("#email").type(login);
    cy.get("#password").type(password);
    cy.get('button[type="submit"]').click();
  });

  it("Тест на правильность отображения вопросов в превью и тестовом просмотре ", () => {
    cy.get('[data-cy="create-quiz"]').click();
    cy.wait(1000);
    cy.get('button[data-cy="create-quiz-card"]').eq(0).click();
    cy.wait(1000);
    cy.get('button[data-cy="select-quiz-layout-standard"]').click();
    cy.get('input[type="checkbox"]').click();

    cy.get('[data-cy="setup-questions"]').click();

    cy.wait(500);

    cy.get(`[data-cy="select-questiontype-images"]`).click();

    cy.get(
      '[data-cy="checkbox-optional-question"] > .PrivateSwitchBase-input',
    ).click();

    cy.get("#questionTitle").type("Заголовок вопроса");

    cy.get('[data-cy="quiz-variant-question-answer"]')
      .eq(0)
      .type("1")
      .type("{enter}");
    cy.get('[data-cy="quiz-variant-question-answer"]')
      .eq(1)
      .should("have.value", "")
      .type("2")
      .type("{enter}");

    // превью
    cy.get(`button[data-cy="button-preview"]`).click();
    cy.wait(2000);

    cy.get(".MuiTypography-h6")
      .should("exist")
      .and("have.text", "Заголовок вопроса");
    cy.get(":nth-child(1) > .MuiFormControlLabel-root")
      .should("exist")
      .and("have.text", "1");
    cy.get(":nth-child(2) > .MuiFormControlLabel-root")
      .should("exist")
      .and("have.text", "2");

    cy.get(`button[data-cy="button-preview"]`).click();

    cy.visit("http://localhost:3000/view");
    cy.wait(2000);

    // проверка введёных значений
    cy.get(".MuiTypography-h5")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.get(":nth-child(1) > .MuiFormControlLabel-root")
      .should("exist")
      .and("have.text", "1");
    cy.get(":nth-child(2) > .MuiFormControlLabel-root")
      .should("exist")
      .and("have.text", "2");

    cy.visit("http://localhost:3000/edit");

    cy.wait(500);
    cy.get('[data-cy="delete-question"]').click();
    cy.wait(5000);
    cy.get('[data-cy="create-question"]').click();

    //Варианты ответов +
    cy.get(`[data-cy="select-questiontype-variant"]`).click();

    cy.get(
      '[data-cy="checkbox-optional-question"] > .PrivateSwitchBase-input',
    ).click();

    cy.get("#questionTitle").type("Заголовок вопроса");

    cy.get('[data-cy="quiz-variant-question-answer"]')
      .eq(0)
      .type("1")
      .type("{enter}");
    cy.get('[data-cy="quiz-variant-question-answer"]')
      .eq(1)
      .should("have.value", "")
      .type("2")
      .type("{enter}");

    // превью
    cy.get(`button[data-cy="button-preview"]`).click();
    cy.wait(2000);

    cy.get(".MuiTypography-h6")
      .should("exist")
      .and("have.text", "Заголовок вопроса");
    cy.get(".MuiFormControlLabel-label").contains("1").should("exist");
    cy.get(".MuiFormControlLabel-label").contains("2").should("exist");

    cy.get(`button[data-cy="button-preview"]`).click();

    cy.visit("http://localhost:3000/view");
    cy.wait(2000);

    // проверка введёных значений
    cy.get(".MuiTypography-h5")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.get(".MuiFormControlLabel-label").contains("1").should("exist");
    cy.get(".MuiFormControlLabel-label").contains("2").should("exist");

    cy.visit("http://localhost:3000/edit");

    cy.wait(500);
    cy.get('[data-cy="delete-question"]').click();
    cy.wait(5000);
    cy.get('[data-cy="create-question"]').click();

    // Варианты и картинка +

    cy.get(`[data-cy="select-questiontype-varimg"]`).click();

    cy.get(
      '[data-cy="checkbox-optional-question"] > .PrivateSwitchBase-input',
    ).click();

    cy.get("#questionTitle").type("Заголовок вопроса");

    cy.get('[data-cy="quiz-variant-question-answer"]')
      .eq(0)
      .type("1")
      .type("{enter}");
    cy.get('[data-cy="quiz-variant-question-answer"]')
      .eq(1)
      .should("have.value", "")
      .type("2")
      .type("{enter}");

    // превью
    cy.get(`button[data-cy="button-preview"]`).click();
    cy.wait(2000);

    cy.get(".MuiTypography-h6")
      .should("exist")
      .and("have.text", "Заголовок вопроса");
    cy.get(".MuiFormControlLabel-label").contains("1").should("exist");
    cy.get(".MuiFormControlLabel-label").contains("2").should("exist");

    cy.get(`button[data-cy="button-preview"]`).click();

    cy.visit("http://localhost:3000/view");
    cy.wait(2000);

    // проверка введёных значений
    cy.get(".MuiTypography-h5")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.get(".MuiFormControlLabel-label").contains("1").should("exist");
    cy.get(".MuiFormControlLabel-label").contains("2").should("exist");

    cy.visit("http://localhost:3000/edit");

    cy.wait(500);
    cy.get('[data-cy="delete-question"]').click();
    cy.wait(5000);
    cy.get('[data-cy="create-question"]').click();

    //Эмоджи +

    cy.get(`[data-cy="select-questiontype-emoji"]`).click();

    cy.get(
      '[data-cy="checkbox-optional-question"] > .PrivateSwitchBase-input',
    ).click();

    cy.get("#questionTitle").type("Заголовок вопроса");

    cy.get('[data-cy="quiz-variant-question-answer"]')
      .eq(0)
      .type("1")
      .type("{enter}");
    cy.get('[data-cy="quiz-variant-question-answer"]')
      .eq(1)
      .should("have.value", "")
      .type("2")
      .type("{enter}");

    // превью
    cy.get(`button[data-cy="button-preview"]`).click();
    cy.wait(2000);

    cy.get(".MuiTypography-h6")
      .should("exist")
      .and("have.text", "Заголовок вопроса");
    cy.get(".MuiFormControlLabel-label").contains("1").should("exist");
    cy.get(".MuiFormControlLabel-label").contains("2").should("exist");

    cy.get(`button[data-cy="button-preview"]`).click();

    cy.visit("http://localhost:3000/view");
    cy.wait(2000);

    // проверка введёных значений
    cy.get(".MuiTypography-h5")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.get(".MuiFormControlLabel-label").contains("1").should("exist");
    cy.get(".MuiFormControlLabel-label").contains("2").should("exist");

    cy.visit("http://localhost:3000/edit");

    cy.wait(500);
    cy.get('[data-cy="delete-question"]').click();
    cy.wait(5000);
    cy.get('[data-cy="create-question"]').click();

    //Своё поле для ввода +
    cy.get(`[data-cy="select-questiontype-text"]`).click();

    cy.get(
      '[data-cy="checkbox-optional-question"] > .PrivateSwitchBase-input',
    ).click();

    cy.get("#questionTitle").type("Заголовок вопроса");

    cy.get('input[placeholder="Пример ответа"]')
      .eq(0)
      .type("1")
      .type("{enter}");

    // превью
    cy.get(`button[data-cy="button-preview"]`).click();
    cy.wait(2000);

    cy.get(".MuiTypography-h6")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.get('input[placeholder="1"]').should("exist");

    cy.get(`button[data-cy="button-preview"]`).click();

    cy.visit("http://localhost:3000/view");
    cy.wait(2000);

    // проверка введёных значений
    cy.get(".MuiTypography-h5")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.get('input[placeholder="1"]').should("exist");

    cy.visit("http://localhost:3000/edit");

    cy.wait(500);
    cy.get('[data-cy="delete-question"]').click();
    cy.wait(5000);
    cy.get('[data-cy="create-question"]').click();

    //Выпадающий список +

    cy.get(`[data-cy="select-questiontype-select"]`).click();

    cy.get(
      '[data-cy="checkbox-optional-question"] > .PrivateSwitchBase-input',
    ).click();

    cy.get("#questionTitle").type("Заголовок вопроса");

    cy.get('[data-cy="quiz-variant-question-answer"]')
      .eq(0)
      .type("1")
      .type("{enter}");
    cy.get('[data-cy="quiz-variant-question-answer"]')
      .eq(1)
      .should("have.value", "")
      .type("2")
      .type("{enter}");

    // превью
    cy.get(`button[data-cy="button-preview"]`).click();
    cy.wait(2000);

    cy.get(".MuiTypography-h6")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.get(".MuiFormControlLabel-label").contains("1").should("exist");
    cy.get(".MuiFormControlLabel-label").contains("2").should("exist");

    cy.get(`button[data-cy="button-preview"]`).click();

    cy.visit("http://localhost:3000/view");
    cy.wait(2000);

    // проверка введёных значений
    cy.get(".MuiTypography-h5")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.get(".MuiFormControlLabel-label").contains("1").should("exist");
    cy.get(".MuiFormControlLabel-label").contains("2").should("exist");

    cy.visit("http://localhost:3000/edit");

    cy.wait(500);
    cy.get('[data-cy="delete-question"]').click();
    cy.wait(5000);
    cy.get('[data-cy="create-question"]').click();

    //Дата +
    cy.get(`[data-cy="select-questiontype-date"]`).click();
    cy.get(
      '[data-cy="checkbox-optional-question"] > .PrivateSwitchBase-input',
    ).click();

    cy.get("#questionTitle").type("Заголовок вопроса");

    // превью
    cy.get(`button[data-cy="button-preview"]`).click();
    cy.wait(2000);

    cy.get(".MuiTypography-h6")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.get(`button[data-cy="button-preview"]`).click();

    cy.visit("http://localhost:3000/view");
    cy.wait(2000);

    // проверка введёных значений
    cy.get(".MuiTypography-h5")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.wait(500);
    cy.get('[data-cy="delete-question"]').click();
    cy.wait(5000);
    cy.get('[data-cy="create-question"]').click();

    //Ползунок +

    cy.get(`[data-cy="select-questiontype-number"]`).click();
    cy.get(
      '[data-cy="checkbox-optional-question"] > .PrivateSwitchBase-input',
    ).click();

    cy.get("#questionTitle").type("Заголовок вопроса");

    // превью
    cy.get(`button[data-cy="button-preview"]`).click();
    cy.wait(2000);

    cy.get(".MuiTypography-h6")
      .should("exist")
      .and("have.text", "Заголовок вопроса");
    cy.get(".MuiTypography-p")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.get(`button[data-cy="button-preview"]`).click();

    cy.visit("http://localhost:3000/view");
    cy.wait(2000);

    // проверка введёных значений
    cy.get(".MuiTypography-h5")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.wait(500);
    cy.get('[data-cy="delete-question"]').click();
    cy.wait(5000);
    cy.get('[data-cy="create-question"]').click();

    // Загрузка файла +

    cy.get(`[data-cy="select-questiontype-file"]`).click();
    cy.get(
      '[data-cy="checkbox-optional-question"] > .PrivateSwitchBase-input',
    ).click();

    cy.get("#questionTitle").type("Заголовок вопроса");

    // превью
    cy.get(`button[data-cy="button-preview"]`).click();
    cy.wait(2000);

    cy.get(".MuiTypography-h6")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.get(`button[data-cy="button-preview"]`).click();

    cy.visit("http://localhost:3000/view");
    cy.wait(2000);

    // проверка введёных значений
    cy.get(".MuiTypography-h5")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.wait(500);
    cy.get('[data-cy="delete-question"]').click();
    cy.wait(5000);
    cy.get('[data-cy="create-question"]').click();

    // Страница

    cy.get(`[data-cy="select-questiontype-page"]`).click();
    cy.get(
      '[data-cy="checkbox-optional-question"] > .PrivateSwitchBase-input',
    ).click();

    cy.get("#questionTitle").type("Заголовок вопроса");
    cy.get("#addText").type("Добавляю текст");

    // превью
    cy.get(`button[data-cy="button-preview"]`).click();
    cy.wait(2000);

    cy.get(".MuiTypography-h6")
      .should("exist")
      .and("have.text", "Заголовок вопроса");
    cy.get(".MuiTypography-p")
      .should("exist")
      .and("have.text", "Добавляю текст");

    cy.get(`button[data-cy="button-preview"]`).click();

    cy.visit("http://localhost:3000/view");
    cy.wait(2000);

    // проверка введёных значений
    cy.get(".MuiTypography-h5")
      .should("exist")
      .and("have.text", "Заголовок вопроса");
    cy.get(".MuiTypography-p")
      .should("exist")
      .and("have.text", "Добавляю текст");

    cy.wait(500);
    cy.get('[data-cy="delete-question"]').click();
    cy.wait(5000);
    cy.get('[data-cy="create-question"]').click();

    // Рейтинг

    cy.get(`[data-cy="select-questiontype-rating"]`).click();
    cy.get(
      '[data-cy="checkbox-optional-question"] > .PrivateSwitchBase-input',
    ).click();

    cy.get("#questionTitle").type("Заголовок вопроса");

    // превью
    cy.get(`button[data-cy="button-preview"]`).click();
    cy.wait(2000);

    cy.get(".MuiTypography-h6")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.get(`button[data-cy="button-preview"]`).click();

    cy.visit("http://localhost:3000/view");
    cy.wait(2000);

    // проверка введёных значений
    cy.get(".MuiTypography-h5")
      .should("exist")
      .and("have.text", "Заголовок вопроса");

    cy.wait(500);
    cy.get('[data-cy="delete-question"]').click();
    cy.wait(5000);
    cy.get('[data-cy="create-question"]').click();
  });
});
