Skip to content

Commit 940280d

Browse files
committed
functionality refactoring, test coverage
1 parent 69acc35 commit 940280d

File tree

2 files changed

+126
-58
lines changed

2 files changed

+126
-58
lines changed

app/code/Magento/Sales/Model/AdminOrder/Create.php

Lines changed: 47 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -301,40 +301,41 @@ class Create extends \Magento\Framework\DataObject implements \Magento\Checkout\
301301
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
302302
*/
303303
public function __construct(
304-
\Magento\Framework\ObjectManagerInterface $objectManager,
305-
\Magento\Framework\Event\ManagerInterface $eventManager,
306-
\Magento\Framework\Registry $coreRegistry,
307-
\Magento\Sales\Model\Config $salesConfig,
308-
\Magento\Backend\Model\Session\Quote $quoteSession,
309-
\Psr\Log\LoggerInterface $logger,
310-
\Magento\Framework\DataObject\Copy $objectCopyService,
311-
\Magento\Framework\Message\ManagerInterface $messageManager,
312-
Product\Quote\Initializer $quoteInitializer,
313-
\Magento\Customer\Api\CustomerRepositoryInterface $customerRepository,
314-
\Magento\Customer\Api\AddressRepositoryInterface $addressRepository,
315-
\Magento\Customer\Api\Data\AddressInterfaceFactory $addressFactory,
316-
\Magento\Customer\Model\Metadata\FormFactory $metadataFormFactory,
317-
\Magento\Customer\Api\GroupRepositoryInterface $groupRepository,
318-
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
319-
\Magento\Sales\Model\AdminOrder\EmailSender $emailSender,
304+
\Magento\Framework\ObjectManagerInterface $objectManager,
305+
\Magento\Framework\Event\ManagerInterface $eventManager,
306+
\Magento\Framework\Registry $coreRegistry,
307+
\Magento\Sales\Model\Config $salesConfig,
308+
\Magento\Backend\Model\Session\Quote $quoteSession,
309+
\Psr\Log\LoggerInterface $logger,
310+
\Magento\Framework\DataObject\Copy $objectCopyService,
311+
\Magento\Framework\Message\ManagerInterface $messageManager,
312+
Product\Quote\Initializer $quoteInitializer,
313+
\Magento\Customer\Api\CustomerRepositoryInterface $customerRepository,
314+
\Magento\Customer\Api\AddressRepositoryInterface $addressRepository,
315+
\Magento\Customer\Api\Data\AddressInterfaceFactory $addressFactory,
316+
\Magento\Customer\Model\Metadata\FormFactory $metadataFormFactory,
317+
\Magento\Customer\Api\GroupRepositoryInterface $groupRepository,
318+
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
319+
\Magento\Sales\Model\AdminOrder\EmailSender $emailSender,
320320
\Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry,
321-
\Magento\Quote\Model\Quote\Item\Updater $quoteItemUpdater,
322-
\Magento\Framework\DataObject\Factory $objectFactory,
323-
\Magento\Quote\Api\CartRepositoryInterface $quoteRepository,
324-
\Magento\Customer\Api\AccountManagementInterface $accountManagement,
325-
\Magento\Customer\Api\Data\CustomerInterfaceFactory $customerFactory,
326-
\Magento\Customer\Model\Customer\Mapper $customerMapper,
327-
\Magento\Quote\Api\CartManagementInterface $quoteManagement,
328-
\Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
329-
\Magento\Sales\Api\OrderManagementInterface $orderManagement,
330-
\Magento\Quote\Model\QuoteFactory $quoteFactory,
331-
array $data = [],
332-
\Magento\Framework\Serialize\Serializer\Json $serializer = null,
333-
ExtensibleDataObjectConverter $dataObjectConverter = null,
334-
StoreManagerInterface $storeManager = null,
335-
CustomAttributeListInterface $customAttributeList = null,
336-
OrderRepositoryInterface $orderRepositoryInterface = null
337-
) {
321+
\Magento\Quote\Model\Quote\Item\Updater $quoteItemUpdater,
322+
\Magento\Framework\DataObject\Factory $objectFactory,
323+
\Magento\Quote\Api\CartRepositoryInterface $quoteRepository,
324+
\Magento\Customer\Api\AccountManagementInterface $accountManagement,
325+
\Magento\Customer\Api\Data\CustomerInterfaceFactory $customerFactory,
326+
\Magento\Customer\Model\Customer\Mapper $customerMapper,
327+
\Magento\Quote\Api\CartManagementInterface $quoteManagement,
328+
\Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
329+
\Magento\Sales\Api\OrderManagementInterface $orderManagement,
330+
\Magento\Quote\Model\QuoteFactory $quoteFactory,
331+
array $data = [],
332+
\Magento\Framework\Serialize\Serializer\Json $serializer = null,
333+
ExtensibleDataObjectConverter $dataObjectConverter = null,
334+
StoreManagerInterface $storeManager = null,
335+
CustomAttributeListInterface $customAttributeList = null,
336+
OrderRepositoryInterface $orderRepositoryInterface = null
337+
)
338+
{
338339
$this->_objectManager = $objectManager;
339340
$this->_eventManager = $eventManager;
340341
$this->_coreRegistry = $coreRegistry;
@@ -888,7 +889,12 @@ public function moveQuoteItem($item, $moveTo, $qty)
888889
}
889890

890891
$cartItems = $cart->getAllVisibleItems();
891-
$canBeRestored = (bool)$this->restoreTransferredItem('cart', $cartItems, $product);
892+
$cartItemsToRestore = [];
893+
foreach ($cartItems as $value) {
894+
$cartItemsToRestore[$value->getData('item_id')] = $value->getData('item_id');
895+
}
896+
$canBeRestored = $this->restoreTransferredItem('cart', $cartItemsToRestore);
897+
892898
if (!$canBeRestored) {
893899
$cartItem = $cart->addProduct($product, $info);
894900
if (is_string($cartItem)) {
@@ -939,7 +945,7 @@ public function moveQuoteItem($item, $moveTo, $qty)
939945
$this->getSession()->getStoreId()
940946
);
941947
$wishlistItems = $wishlist->getItemCollection()->getItems();
942-
$canBeRestored = (bool)$this->restoreTransferredItem('wishlist', $wishlistItems, null);
948+
$canBeRestored = $this->restoreTransferredItem('wishlist', $wishlistItems);
943949
if (!$canBeRestored) {
944950
$wishlist->addNewItem($item->getProduct(), $info);
945951
}
@@ -990,7 +996,7 @@ public function applySidebarData($data)
990996
$this->moveQuoteItem($item, 'order', $qty);
991997
$transferredItems = $this->_session->getTransferredItems() ?? [];
992998
$transferredItems['cart'][$itemId] = $itemId;
993-
$this->_session->setTransferredItems($transferredItems) ;
999+
$this->_session->setTransferredItems($transferredItems);
9941000
}
9951001
}
9961002
}
@@ -1006,7 +1012,7 @@ public function applySidebarData($data)
10061012
$this->addProduct($item->getProduct(), $item->getBuyRequest()->toArray());
10071013
$transferredItems = $this->_session->getTransferredItems() ?? [];
10081014
$transferredItems['wishlist'][$itemId] = $itemId;
1009-
$this->_session->setTransferredItems($transferredItems) ;
1015+
$this->_session->setTransferredItems($transferredItems);
10101016
}
10111017
}
10121018
}
@@ -2108,34 +2114,17 @@ private function removeTransferredItems(): void
21082114
*
21092115
* @param string $area
21102116
* @param \Magento\Quote\Model\Quote\Item[]|\Magento\Wishlist\Model\Item[] $items
2111-
* @param \Magento\Catalog\Model\Product|null $product Product
21122117
* @return bool
21132118
*/
2114-
private function restoreTransferredItem($area, $items, $product = null): bool
2119+
private function restoreTransferredItem(string $area, array $items): bool
21152120
{
21162121
$transferredItems = $this->_session->getTransferredItems() ?? [];
21172122
if (!isset($transferredItems[$area])) {
21182123
return false;
21192124
}
2120-
$itemToRestoreId = null;
2121-
switch ($area) {
2122-
case 'wishlist':
2123-
$itemToRestore = array_intersect_key($items, $transferredItems['wishlist']);
2124-
if ($itemToRestore) {
2125-
$itemToRestoreId = array_key_first($itemToRestore);
2126-
}
2127-
break;
2128-
case 'cart':
2129-
$cart = $this->getCustomerCart();
2130-
$cartItem = $cart->getItemByProduct($product);
2131-
$canBeRestored = $cartItem ? in_array($cartItem->getId(), $transferredItems['cart']) : false;
2132-
if ($canBeRestored) {
2133-
$itemToRestoreId = $cartItem->getItemId();
2134-
}
2135-
break;
2136-
default:
2137-
break;
2138-
}
2125+
$itemToRestore = array_intersect_key($items, $transferredItems[$area]);
2126+
$itemToRestoreId = array_key_first($itemToRestore);
2127+
21392128
if ($itemToRestoreId) {
21402129
unset($transferredItems[$area][$itemToRestoreId]);
21412130
$this->_session->setTransferredItems($transferredItems);
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
11+
<test name="AdminCreateOrderToVerifyMoveItemToOrderItemsAndBackToCartTest">
12+
<annotations>
13+
<stories value="Create Order in Admin and move an item from an order to the cart and back "/>
14+
<title value="Create Order to verify moving an item from an order to the cart and back works correctly test"/>
15+
<description value="Create Order to verify moving an item from an order to the cart and back works correctly test"/>
16+
<severity value="AVERAGE"/>
17+
<testCaseId value="https://github.com/magento/magento2/issues/37538"/>
18+
<group value="sales"/>
19+
</annotations>
20+
<before>
21+
<actionGroup ref="AdminLoginActionGroup" stepKey="LoginAsAdmin"/>
22+
<createData entity="Simple_US_Customer" stepKey="createCustomer"/>
23+
<createData entity="SimpleProduct2" stepKey="createSimpleProduct">
24+
<field key="price">10</field>
25+
</createData>
26+
<createData entity="SalesRuleSpecificCouponWithFixedDiscount" stepKey="createCartPriceRule"/>
27+
<createData entity="SimpleSalesRuleCoupon" stepKey="createCouponForCartPriceRule">
28+
<requiredEntity createDataKey="createCartPriceRule"/>
29+
</createData>
30+
<magentoCLI
31+
command="config:set {{EnablePaymentBankTransferConfigData.path}} {{EnablePaymentBankTransferConfigData.value}}"
32+
stepKey="enableBankTransferPayment"/>
33+
<magentoCLI command="config:set {{EnableFlatRateConfigData.path}} {{EnableFlatRateConfigData.value}}"
34+
stepKey="enableFlatRate"/>
35+
</before>
36+
<after>
37+
<magentoCLI
38+
command="config:set {{DisablePaymentBankTransferConfigData.path}} {{DisablePaymentBankTransferConfigData.value}}"
39+
stepKey="disableBankTransferPayment"/>
40+
<deleteData createDataKey="createCartPriceRule" stepKey="deleteCartPriceRule"/>
41+
<actionGroup ref="StorefrontCustomerLogoutActionGroup" stepKey="logoutCustomer" />
42+
<deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/>
43+
<deleteData createDataKey="createSimpleProduct" stepKey="deleteSimpleProduct"/>
44+
<actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/>
45+
</after>
46+
<actionGroup ref="AdminNavigateToNewOrderPageExistingCustomerActionGroup" stepKey="goToCreateOrderPage">
47+
<argument name="customer" value="$$createCustomer$$"/>
48+
</actionGroup>
49+
50+
<!-- Add product to order -->
51+
<actionGroup ref="AddSimpleProductToOrderActionGroup" stepKey="addProductToOrder">
52+
<argument name="product" value="$$createSimpleProduct$$"/>
53+
</actionGroup>
54+
55+
<!-- move the product to SHOPPING CART -->
56+
<actionGroup ref="AdminSelectValueFromActionSelectInItemsOrderedGridOnCreateOrderPageActionGroup" stepKey="moveSimpleProductToShoppingCart">
57+
<argument name="product" value="$$createSimpleProduct$$"/>
58+
<argument name="option" value="Move to Shopping Cart"/>
59+
</actionGroup>
60+
<actionGroup ref="AdminClickUpdateItemsAndQuantitesOnCreateOrderPageActionGroup" stepKey="clickOnUpdateItemsAndQuantity"/>
61+
<comment userInput="Comment is added to preserve the step key for backward compatibility" stepKey="waitForAdminCreateOrderWishListSectionPageLoad"/>
62+
63+
<!-- Again move product to Order. -->
64+
<checkOption selector="{{AdminCustomerActivitiesShoppingCartSection.addToOrder}}" stepKey="checkOptionAddToOrder"/>
65+
<actionGroup ref="AdminClickUpdateChangesOnCreateOrderPageActionGroup" stepKey="clickUpdateChangesBtn"/>
66+
<comment userInput="Comment is added to preserve the step key for backward compatibility" stepKey="waitForOrderUpdating"/>
67+
68+
<!-- Put the items back into the cart. -->
69+
<actionGroup ref="AdminSelectValueFromActionSelectInItemsOrderedGridOnCreateOrderPageActionGroup" stepKey="moveSimpleProductToShoppingCartBack">
70+
<argument name="product" value="$$createSimpleProduct$$"/>
71+
<argument name="option" value="Move to Shopping Cart"/>
72+
</actionGroup>
73+
<actionGroup ref="AdminClickUpdateItemsAndQuantitesOnCreateOrderPageActionGroup" stepKey="clickOnUpdateItemsAndQuantity2"/>
74+
<comment userInput="Comment is added to preserve the step key for backward compatibility" stepKey="waitForAdminCreateOrderWishListSectionPageLoad2"/>
75+
76+
<!-- Check to see if the item exists in the cart -->
77+
<see selector="{{AdminCreateOrderShoppingCartSection.shoppingCartBlock}}" userInput="$$createSimpleProduct.name$$" stepKey="seeProductInShoppingCart"/>
78+
</test>
79+
</tests>

0 commit comments

Comments
 (0)