saleor-dashboard/cypress/integration/dashboard.js

129 lines
4.4 KiB
JavaScript
Raw Normal View History

2021-01-27 09:41:55 +00:00
import faker from "faker";
import Customer from "../api/Customer";
import Order from "../api/Order";
import Product from "../api/Product";
import ShippingMethod from "../api/ShippingMethod";
2021-01-21 10:05:54 +00:00
import { DASHBOARD_SELECTORS } from "../elements/dashboard/dashboard-selectors";
2021-01-21 10:05:54 +00:00
// <reference types="cypress" />
describe("User authorization", () => {
2021-01-27 09:41:55 +00:00
const startsWith = "Cy-";
const customer = new Customer();
const product = new Product();
const order = new Order();
const shippingMethod = new ShippingMethod();
before(() => {
customer.deleteCustomers(startsWith);
shippingMethod.deleteShippingZones(startsWith);
});
2021-01-21 10:05:54 +00:00
beforeEach(() => {
cy.clearSessionData().loginUserViaRequest();
});
2021-01-27 09:41:55 +00:00
xit("should all elements be visible on the dashboard", () => {
2021-01-21 10:05:54 +00:00
cy.visit("/");
softAssertVisibility(DASHBOARD_SELECTORS.sales);
softAssertVisibility(DASHBOARD_SELECTORS.orders);
softAssertVisibility(DASHBOARD_SELECTORS.activity);
softAssertVisibility(DASHBOARD_SELECTORS.topProducts);
softAssertVisibility(DASHBOARD_SELECTORS.ordersReadyToFulfill);
softAssertVisibility(DASHBOARD_SELECTORS.paymentsWaitingForCapture);
softAssertVisibility(DASHBOARD_SELECTORS.productsOutOfStock);
});
2021-01-27 09:41:55 +00:00
it("should correct amount of orders be displayed", () => {
faker = require("faker");
const randomName = startsWith + faker.random.number();
const randomEmail = randomName + "@example.com";
product.getFirstProducts(3).then(productsResp => {
const productsList = productsResp.body.data.products.edges;
productsList.forEach(productElement => {
product.updateChannelInProduct(
"Q2hhbm5lbDoxNzk=",
productElement.node.id
);
const variants = productElement.node.variants;
variants.forEach(variant => {
product.updateChannelPriceInVariant(variant.id, "Q2hhbm5lbDoxNzk=");
});
});
cy.fixture("addresses").then(json => {
customer
.createCustomer(randomEmail, randomName, json.plAddress)
.as("createCustomerResponse")
.then(resp => {
const customerId = resp.body.data.customerCreate.user.id;
shippingMethod
.createShippingZone(randomName, "PL")
.then(shippingZoneResp => {
shippingMethod
.createShippingRate(
randomName,
shippingZoneResp.body.data.shippingZoneCreate.shippingZone
.id
)
.then(rateResp => {
const shippingMethodId =
rateResp.body.data.shippingPriceCreate.shippingMethod.id;
shippingMethod
.addChannelToShippingMethod(
shippingMethodId,
"Q2hhbm5lbDoxNzk="
)
.then(shippingMethodResp => {
createReadyToFullfillOrder(
customerId,
shippingMethodId,
"Q2hhbm5lbDoxNzk=",
productsList
);
});
});
});
});
});
2021-01-21 10:05:54 +00:00
});
2021-01-27 09:41:55 +00:00
cy.visit("/");
softAssertMatch(DASHBOARD_SELECTORS.orders, /^0/);
softAssertMatch(DASHBOARD_SELECTORS.ordersReadyToFulfill, /^Brak/);
softAssertMatch(DASHBOARD_SELECTORS.paymentsWaitingForCapture, /^Brak/);
softAssertMatch(DASHBOARD_SELECTORS.productsOutOfStock, /^Brak/);
2021-01-21 10:05:54 +00:00
});
2021-01-27 09:41:55 +00:00
function createReadyToFullfillOrder(
customerId,
shippingMethodId,
channelId,
productsList
) {
order
.createDraftOrder(customerId, shippingMethodId, channelId)
.then(draftOrderResp => {
const orderId = draftOrderResp.body.data.draftOrderCreate.order.id;
productsList.forEach(productElement => {
productElement.node.variants.forEach(variantElement => {
order.addProductToOrder(orderId, variantElement.id);
});
});
order.markOrderAsPaid(orderId);
order.completeOrder(orderId);
});
}
2021-01-21 10:05:54 +00:00
function softAssertVisibility(selector) {
cy.get(selector).then(element => chai.softExpect(element).to.be.visible);
}
2021-01-27 09:41:55 +00:00
function softAssertMatch(selector, regexp) {
cy.get(selector)
.invoke("text")
.then(text =>
chai.softExpect(assert.match(text, regexp, "regexp matches"))
);
}
2021-01-21 10:05:54 +00:00
});