saleor-dashboard/cypress/utils/productsUtils.js
Karolina 0da6012bc4
Saleor 1746 tests for vouchers (#1014)
* tests for vouchers

* test for vouchers

* test for vouchers

* add getDefaultAddress
2021-03-23 11:15:39 +01:00

124 lines
3 KiB
JavaScript

import * as attributeRequest from "../apiRequests/Attribute";
import * as categoryRequest from "../apiRequests/Category";
import * as productRequest from "../apiRequests/Product";
export function createProductInChannel({
name,
channelId,
warehouseId = null,
quantityInWarehouse = 10,
productTypeId,
attributeId,
categoryId,
price = 1,
isPublished = true,
isAvailableForPurchase = true,
visibleInListings = true
}) {
let product;
let variants;
return createProduct(attributeId, name, productTypeId, categoryId)
.then(productResp => {
product = productResp;
productRequest.updateChannelInProduct({
productId: product.id,
channelId,
isPublished,
isAvailableForPurchase,
visibleInListings
});
})
.then(() => {
createVariant({
productId: product.id,
sku: name,
warehouseId,
quantityInWarehouse,
channelId,
price
});
})
.then(variantsResp => {
variants = variantsResp;
return { product, variants };
});
}
export function createTypeAttributeAndCategoryForProduct(
name,
attributeValues
) {
let attribute;
let productType;
let category;
return createAttribute(name, attributeValues)
.then(attributeResp => {
attribute = attributeResp;
createTypeProduct(name, attributeResp.id);
})
.then(productTypeResp => {
productType = productTypeResp;
createCategory(name);
})
.then(categoryResp => {
category = categoryResp;
return { attribute, category, productType };
});
}
export function createAttribute(name, attributeValues) {
return attributeRequest
.createAttribute(name, attributeValues)
.its("body.data.attributeCreate.attribute");
}
export function createTypeProduct(name, attributeId) {
return productRequest
.createTypeProduct(name, attributeId)
.its("body.data.productTypeCreate.productType");
}
export function createCategory(name) {
return categoryRequest
.createCategory(name)
.its("body.data.categoryCreate.category");
}
export function createProduct(attributeId, name, productTypeId, categoryId) {
return productRequest
.createProduct(attributeId, name, productTypeId, categoryId)
.its("body.data.productCreate.product");
}
export function createVariant({
productId,
sku,
warehouseId,
quantityInWarehouse,
channelId,
price
}) {
return productRequest
.createVariant({
productId,
sku,
warehouseId,
quantity: quantityInWarehouse,
channelId,
price
})
.its("body.data.productVariantBulkCreate.productVariants");
}
export function deleteProductsStartsWith(startsWith) {
cy.deleteElementsStartsWith(
productRequest.deleteProductType,
productRequest.getProductTypes,
startsWith
);
cy.deleteElementsStartsWith(
attributeRequest.deleteAttribute,
attributeRequest.getAttributes,
startsWith
);
cy.deleteElementsStartsWith(
categoryRequest.deleteCategory,
categoryRequest.getCategories,
startsWith
);
}