247 lines
11 KiB
TypeScript
247 lines
11 KiB
TypeScript
describe("Форма Создания Тарифа", () => {
|
||
beforeEach(() => {
|
||
cy.visit("http://localhost:3000");
|
||
cy.get('input[name="email"]').type("valid_user@example.com");
|
||
cy.get('input[name="password"]').type("valid_password");
|
||
cy.get('button[type="submit"]').click();
|
||
cy.wait(3000);
|
||
cy.url().should("include", "http://localhost:3000/users");
|
||
cy.visit("http://localhost:3000/tariffs");
|
||
});
|
||
|
||
it("должна отображать сообщение об ошибке при пустом названии тарифа", () => {
|
||
cy.get('input[id="tariff-amount"]').type("10");
|
||
|
||
// Выбрать первую привилегию с нужным текстом из выпадающего списка
|
||
cy.get("#privilege-select").click();
|
||
|
||
cy.get(`[data-cy = "select-option-Количество шаблонов, которые может сделать пользователь сервиса"]`).click();
|
||
|
||
cy.get(".btn_createTariffBackend").click({ force: true });
|
||
|
||
cy.contains("Пустое название тарифа");
|
||
});
|
||
|
||
it("должна отображать сообщение об ошибке при отсутствии выбора привилегии", () => {
|
||
cy.get('input[id="tariff-name"]').type("Тестовый Тариф");
|
||
cy.get('input[id="tariff-amount"]').type("10");
|
||
|
||
cy.get(".btn_createTariffBackend").click({ force: true });
|
||
|
||
cy.contains("Не выбрана привилегия");
|
||
});
|
||
|
||
it("Создание трех тарифов", () => {
|
||
cy.get('input[id="tariff-name"]').type("Тестовый Тариф 1");
|
||
cy.get('input[id="tariff-amount"]').type("10");
|
||
cy.get("#privilege-select").click();
|
||
cy.get(`[data-cy="select-option-Количество шаблонов, которые может сделать пользователь сервиса"]`).click();
|
||
cy.get(".btn_createTariffBackend").click({ force: true });
|
||
|
||
cy.get('input[id="tariff-name"]').scrollIntoView().clear({ force: true }).type("Тестовый Тариф 2");
|
||
cy.get('input[id="tariff-amount"]').scrollIntoView().clear({ force: true }).type("15");
|
||
cy.get("#privilege-select").click();
|
||
cy.wait(800);
|
||
cy.get(`[data-cy="select-option-Количество дней, в течении которых пользование сервисом безлимитно"]`).click();
|
||
cy.get(".btn_createTariffBackend").click({ force: true });
|
||
|
||
cy.get('input[id="tariff-name"]').scrollIntoView().clear({ force: true }).type("Тестовый Тариф 3");
|
||
cy.get('input[id="tariff-amount"]').scrollIntoView().clear({ force: true }).type("20");
|
||
cy.get("#privilege-select").click();
|
||
cy.wait(800);
|
||
cy.get(`[data-cy="select-option-Обьём ПенаДиска для хранения шаблонов и результатов шаблонизации"]`).click();
|
||
cy.get(".btn_createTariffBackend").click({ force: true });
|
||
|
||
cy.wait(5000);
|
||
});
|
||
});
|
||
|
||
describe("Форма Создания Тарифа", () => {
|
||
beforeEach(() => {
|
||
cy.visit("http://localhost:3000");
|
||
cy.get('input[name="email"]').type("valid_user@example.com");
|
||
cy.get('input[name="password"]').type("valid_password");
|
||
cy.get('button[type="submit"]').click();
|
||
cy.wait(3000);
|
||
cy.url().should("include", "http://localhost:3000/users");
|
||
cy.visit("http://localhost:3000/tariffs");
|
||
});
|
||
|
||
it("Удаление тарифа единично, одного за другим ", () => {
|
||
const tariffNamesToFind = ["Тестовый Тариф 1", "Тестовый Тариф 2", "Тестовый Тариф 3"];
|
||
|
||
// Поиск каждого тарифа в DataGrid
|
||
cy.wait(3000);
|
||
tariffNamesToFind.forEach((tariffName) => {
|
||
cy.get(".tariffs-data-grid").scrollIntoView().contains(tariffName).should("be.visible");
|
||
});
|
||
|
||
const deleteTariffs = () => {
|
||
let tariffsFound = true;
|
||
|
||
cy.get(".tariffs-data-grid .MuiDataGrid-row").then(($rows) => {
|
||
const rowCount = $rows.length;
|
||
|
||
if (rowCount === 1) {
|
||
cy.log("Тарифы не найдены. Тест завершен.");
|
||
tariffsFound = false;
|
||
}
|
||
|
||
cy.wrap($rows).each(($row) => {
|
||
// Шаг 2: В каждом элементе найдите все дивы вложенные внутрь и выберите последний див
|
||
cy.wrap($row).find("div").last().scrollIntoView().get(".delete-tariff-button").last().click({ force: true });
|
||
});
|
||
|
||
cy.wait(2000);
|
||
cy.contains("Да")
|
||
.click()
|
||
.then(() => {
|
||
if (!tariffsFound) {
|
||
return;
|
||
}
|
||
|
||
cy.wait(5000);
|
||
deleteTariffs();
|
||
});
|
||
});
|
||
};
|
||
|
||
deleteTariffs();
|
||
|
||
// Проверяем что Дата грид тарифов пустой
|
||
cy.wait(2000);
|
||
cy.get(".tariffs-data-grid .MuiDataGrid-row").should("not.exist");
|
||
});
|
||
|
||
it("Удаление тарифов массово через DataGrid", () => {
|
||
// Добавляем 3 тариффа
|
||
cy.get('input[id="tariff-name"]').type("Тестовый Тариф 1");
|
||
cy.get('input[id="tariff-amount"]').type("10");
|
||
cy.get("#privilege-select").click();
|
||
cy.get(`[data-cy="select-option-Количество шаблонов, которые может сделать пользователь сервиса"]`).click();
|
||
cy.get(".btn_createTariffBackend").click({ force: true });
|
||
|
||
cy.get('input[id="tariff-name"]').scrollIntoView().clear({ force: true }).type("Тестовый Тариф 2");
|
||
cy.get('input[id="tariff-amount"]').scrollIntoView().clear({ force: true }).type("15");
|
||
cy.get("#privilege-select").click();
|
||
cy.wait(800);
|
||
cy.get(`[data-cy="select-option-Количество дней, в течении которых пользование сервисом безлимитно"]`).click();
|
||
cy.get(".btn_createTariffBackend").click({ force: true });
|
||
|
||
cy.get('input[id="tariff-name"]').scrollIntoView().clear({ force: true }).type("Тестовый Тариф 3");
|
||
cy.get('input[id="tariff-amount"]').scrollIntoView().clear({ force: true }).type("20");
|
||
cy.get("#privilege-select").click();
|
||
cy.wait(800);
|
||
cy.get(`[data-cy="select-option-Обьём ПенаДиска для хранения шаблонов и результатов шаблонизации"]`).click();
|
||
cy.get(".btn_createTariffBackend").click({ force: true });
|
||
// Добавляем 3 тариффа
|
||
|
||
cy.wait(3000);
|
||
cy.get(".tariffs-data-grid .PrivateSwitchBase-input").first().click({ multiple: true });
|
||
|
||
// Проверить, что кнопка "Удалить" появилась
|
||
cy.wait(2000);
|
||
cy.contains("Удаление").should("be.visible");
|
||
|
||
// Нажать на кнопку "Удалить"
|
||
cy.contains("Удаление").click();
|
||
|
||
// Подтверждение удаления (если нужно)
|
||
cy.contains("Да").click();
|
||
|
||
// Проверяем что Дата грид тарифов пустой
|
||
cy.wait(2000);
|
||
cy.get(".tariffs-data-grid .MuiDataGrid-row").should("not.exist");
|
||
});
|
||
|
||
it("Добавление тарифом в корзину", () => {
|
||
// Добавляем 3 тариффа
|
||
|
||
cy.get('input[id="tariff-name"]').type("Тестовый Тариф 1");
|
||
cy.get('input[id="tariff-amount"]').type("10");
|
||
cy.get("#privilege-select").click();
|
||
cy.get(`[data-cy="select-option-Количество шаблонов, которые может сделать пользователь сервиса"]`).click();
|
||
cy.get(".btn_createTariffBackend").click({ force: true });
|
||
|
||
cy.get('input[id="tariff-name"]').scrollIntoView().clear({ force: true }).type("Тестовый Тариф 2");
|
||
cy.get('input[id="tariff-amount"]').scrollIntoView().clear({ force: true }).type("15");
|
||
cy.get("#privilege-select").click();
|
||
cy.wait(800);
|
||
cy.get(`[data-cy="select-option-Количество дней, в течении которых пользование сервисом безлимитно"]`).click();
|
||
cy.get(".btn_createTariffBackend").click({ force: true });
|
||
|
||
cy.get('input[id="tariff-name"]').scrollIntoView().clear({ force: true }).type("Тестовый Тариф 3");
|
||
cy.get('input[id="tariff-amount"]').scrollIntoView().clear({ force: true }).type("20");
|
||
cy.get("#privilege-select").click();
|
||
cy.wait(800);
|
||
cy.get(`[data-cy="select-option-Обьём ПенаДиска для хранения шаблонов и результатов шаблонизации"]`).click();
|
||
cy.get(".btn_createTariffBackend").click({ force: true });
|
||
// Добавляем 3 тариффа
|
||
|
||
cy.wait(3000);
|
||
cy.get(".tariffs-data-grid .PrivateSwitchBase-input").first().click({ multiple: true });
|
||
|
||
// Проверить, что кнопка "Удалить" появилась
|
||
cy.wait(2000);
|
||
cy.contains("рассчитать").should("be.visible");
|
||
|
||
// Нажать на кнопку "Удалить"
|
||
cy.contains("рассчитать").click();
|
||
|
||
// смотрим что в корзине ровно столько тарифом, сколько мы добовляли
|
||
cy.wait(5000);
|
||
cy.get(".MuiTable-root tbody tr").its("length").should("eq", 3);
|
||
});
|
||
});
|
||
|
||
describe("Определение поведения кастомной цены тарифа", () => {
|
||
beforeEach(() => {
|
||
cy.visit("http://localhost:3000");
|
||
cy.get('input[name="email"]').type("valid_user@example.com");
|
||
cy.get('input[name="password"]').type("valid_password");
|
||
cy.get('button[type="submit"]').click();
|
||
cy.wait(3000);
|
||
cy.url().should("include", "http://localhost:3000/users");
|
||
cy.visit("http://localhost:3000/tariffs");
|
||
});
|
||
|
||
it("Смотрим чтобы при указание кастомной цены тарифа поля суммы и Цены за ед отображались верно", () => {
|
||
cy.get('input[id="tariff-name"]').type("Тестовый Тариф 1");
|
||
|
||
cy.get('input[id="tariff-amount"]').type("60");
|
||
cy.get('input[id="tariff-custom-price"]').type("5");
|
||
|
||
cy.get("#privilege-select").click();
|
||
|
||
cy.get(`[data-cy="select-option-Количество шаблонов, которые может сделать пользователь сервиса"]`).click();
|
||
cy.get(".btn_createTariffBackend").click({ force: true });
|
||
|
||
cy.wait(3000);
|
||
|
||
// Сумму
|
||
cy.get(".tariffs-data-grid").get(`[data-field="total"]`).contains("300");
|
||
|
||
// Проверяем цену за ед
|
||
cy.get(".tariffs-data-grid").get(`[data-field="pricePerUnit"]`).contains("5");
|
||
});
|
||
|
||
it("Проверка установки цены тарифа по умолчанию при отсутствии кастомной цены", () => {
|
||
cy.get('input[id="tariff-name"]').type("Тестовый Тариф 1");
|
||
|
||
cy.get('input[id="tariff-amount"]').type("80");
|
||
|
||
cy.get("#privilege-select").click();
|
||
|
||
cy.get(`[data-cy="select-option-Количество шаблонов, которые может сделать пользователь сервиса"]`).click();
|
||
cy.get(".btn_createTariffBackend").click({ force: true });
|
||
|
||
cy.wait(3000);
|
||
|
||
// Сумму
|
||
cy.get(".tariffs-data-grid").get(`[data-field="total"]`).contains("0.8");
|
||
|
||
// Проверяем цену за ед
|
||
cy.get(".tariffs-data-grid").get(`[data-field="pricePerUnit"]`).contains("0.01");
|
||
});
|
||
});
|