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-19 21:17:49 +00:00
|
|
|
|
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-19 21:17:49 +00:00
|
|
|
|
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-19 21:17:49 +00:00
|
|
|
|
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-19 21:17:49 +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
|
|
|
});
|