saleor-dashboard/cypress/utils/ordersUtils.js
mmarkusik 19b8d30565
Feature - channels per plugin (#1093)
* Update schema

* Update queries, mutations, and types

* Add render with dividers util function

* Add plugin details channels card component

* Update plugin details to use channels

* Update stories

* Update plugin configuration type across the app, fix some other types, temporarily comment some things out in plugins list so types match"

* Update schema

* Update types

* Update plugins list to show channels and global statuses, add plugin channel status, update status label component

* Add render with dividers util function

* Comment out some stuff for types to match - temporary

* Add useChannelsSearchWithLoadMore util to imitate loading more from backend for channels list with load more

* Change filters logic to be able to display multiple fields in a field section and add it to plugins view

* Add scroll option to plugin availability popup on plugin list

* Fix plugin list page story

* Temporarily comment some stuff out, fix some types

* Add filters errors WIP

* Fix filters not updating list

* Add error handling to plugins list filters and filters in general

* Rename some components according to review

* Move useChannelsSearch and useChannelsSearchWithLoadMore to hooks, change some imports accordingly

* Fix imports

* Move render collection with dividers to a component, fix usages

* Replace channels with load more and search query to base channels query

* Change render with dividers function to take in a component instead of render function

* Update tests

* Extract messages

* Remove unnecessary imports

* Fix filters - autocomplete messing items order sometimes & some fields not working

* Update plugin update mutation variables - change channelId to channel

* fix failing tests

* Add test ids

* fix failing tests

* fix failing tests

* Rename misc.tsx to ts

* Remove usage of render collection with diviers, change it to CollectionWithDividers component

* Remove unnecessary imports

* Update messages ids

* Update snapshots

Co-authored-by: Karolina Rakoczy <rakoczy.karolina@gmail.com>
2021-05-11 15:58:09 +02:00

112 lines
2.8 KiB
JavaScript

import * as checkoutRequest from "../apiRequests/Checkout";
import * as orderRequest from "../apiRequests/Order";
export function createWaitingForCaptureOrder(
channelSlug,
email,
variantsList,
shippingMethodId,
address
) {
let checkout;
const auth = "token";
cy.loginInShop();
return checkoutRequest
.createCheckout({ channelSlug, email, variantsList, address, auth })
.then(checkoutResp => {
checkout = checkoutResp;
checkoutRequest.addShippingMethod(checkout.id, shippingMethodId);
})
.then(() => addPayment(checkout.id))
.then(() => checkoutRequest.completeCheckout(checkout.id))
.then(order => ({ checkout, order }));
}
export function createCheckoutWithVoucher({
channelSlug,
email = "email@example.com",
variantsList,
address,
shippingMethodId,
voucherCode,
auth
}) {
let checkout;
return checkoutRequest
.createCheckout({ channelSlug, email, variantsList, address, auth })
.then(checkoutResp => {
checkout = checkoutResp;
checkoutRequest.addShippingMethod(checkout.id, shippingMethodId);
})
.then(() => {
checkoutRequest.addVoucher(checkout.id, voucherCode);
})
.its("body.data.checkoutAddPromoCode");
}
export function createReadyToFulfillOrder(
customerId,
shippingMethodId,
channelId,
variantsList,
address
) {
let order;
return createDraftOrder(customerId, shippingMethodId, channelId, address)
.then(orderResp => {
order = orderResp;
assignVariantsToOrder(order, variantsList);
})
.then(() => orderRequest.markOrderAsPaid(order.id))
.then(() => orderRequest.completeOrder(order.id));
}
export function createOrder({
customerId,
shippingMethodId,
channelId,
variantsList,
address
}) {
let order;
return createDraftOrder(customerId, shippingMethodId, channelId, address)
.then(orderResp => {
order = orderResp;
assignVariantsToOrder(order, variantsList);
})
.then(() => orderRequest.completeOrder(order.id))
.then(() => order);
}
function assignVariantsToOrder(order, variantsList) {
variantsList.forEach(variantElement => {
orderRequest.addProductToOrder(order.id, variantElement.id);
});
}
export function createDraftOrder(
customerId,
shippingMethodId,
channelId,
address
) {
return orderRequest
.createDraftOrder(customerId, shippingMethodId, channelId, address)
.its("body.data.draftOrderCreate.order");
}
export function createAndCompleteCheckoutWithoutShipping({
channelSlug,
email,
variantsList,
billingAddress,
auth
}) {
let checkout;
return checkoutRequest
.createCheckout({ channelSlug, email, variantsList, billingAddress, auth })
.then(checkoutResp => {
checkout = checkoutResp;
addPayment(checkout.id);
})
.then(() => checkoutRequest.completeCheckout(checkout.id))
.then(order => ({ checkout, order }));
}