From eb8cd708869546a203b17b922c2ce573a6c7f35d Mon Sep 17 00:00:00 2001 From: Nikolay Sumrak Date: Thu, 9 Apr 2020 13:32:19 +0300 Subject: [PATCH 1/3] Fixed creating shipping labels in part-shipment --- .../view/adminhtml/templates/order/packaging/popup.phtml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Shipping/view/adminhtml/templates/order/packaging/popup.phtml b/app/code/Magento/Shipping/view/adminhtml/templates/order/packaging/popup.phtml index 28322d9534926..592babecdbfd6 100644 --- a/app/code/Magento/Shipping/view/adminhtml/templates/order/packaging/popup.phtml +++ b/app/code/Magento/Shipping/view/adminhtml/templates/order/packaging/popup.phtml @@ -44,7 +44,11 @@ $girthEnabled = $block->isDisplayGirthValue() && $block->isGirthAllowed() ? 1 : } }); packaging.setItemQtyCallback(function(itemId){ - var item = $$('[name="shipment[items]['+itemId+']"]')[0]; + var item = $$('[name="shipment[items]['+itemId+']"]')[0], + itemTitle = $('order_item_' + itemId + '_title'); + if (!itemTitle && !item) { + return 0; + } if (item && !isNaN(item.value)) { return item.value; } From b2139152bcdb50a3c4972c9c84f5af8b57b463e5 Mon Sep 17 00:00:00 2001 From: "taras.gamanov" Date: Thu, 17 Sep 2020 18:05:52 +0300 Subject: [PATCH 2/3] Integration test has been added --- .../Adminhtml/Order/AddToPackageTest.php | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 dev/tests/integration/testsuite/Magento/Shipping/Block/Adminhtml/Order/AddToPackageTest.php diff --git a/dev/tests/integration/testsuite/Magento/Shipping/Block/Adminhtml/Order/AddToPackageTest.php b/dev/tests/integration/testsuite/Magento/Shipping/Block/Adminhtml/Order/AddToPackageTest.php new file mode 100644 index 0000000000000..0455181d42b00 --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Shipping/Block/Adminhtml/Order/AddToPackageTest.php @@ -0,0 +1,71 @@ +objectManager = Bootstrap::getObjectManager(); + $this->registry = $this->objectManager->get(Registry::class); + $this->orderFactory = $this->objectManager->get(OrderInterfaceFactory::class); + } + + /** + * Test that Packaging popup renders + * + * @magentoDataFixture Magento/GraphQl/Sales/_files/customer_order_with_ups_shipping.php + */ + public function testGetCommentsHtml() + { + /** @var Template $block */ + $block = $this->objectManager->get(Packaging::class); + + $order = $this->orderFactory->create()->loadByIncrementId('100000001'); + + /** @var ShipmentTrackInterface $track */ + $shipment = $order->getShipmentsCollection()->getFirstItem(); + + $this->registry->register('current_shipment', $shipment); + + $block->setTemplate('Magento_Shipping::order/packaging/popup.phtml'); + $html = $block->toHtml(); + $expectedNeedle = "packaging.setItemQtyCallback(function(itemId){ + var item = $$('[name=\"shipment[items]['+itemId+']\"]')[0], + itemTitle = $('order_item_' + itemId + '_title'); + if (!itemTitle && !item) { + return 0; + } + if (item && !isNaN(item.value)) { + return item.value; + } + });"; + $this->assertStringContainsString($expectedNeedle, $html); + } +} From fee7c0cf8b18a1fc2d4ef6b8f127189efff77565 Mon Sep 17 00:00:00 2001 From: "taras.gamanov" Date: Tue, 22 Sep 2020 15:44:30 +0300 Subject: [PATCH 3/3] Code refactoring, fixture has been updated. --- .../Adminhtml/Order/AddToPackageTest.php | 39 ++++++++++++--- .../_files/shipping_with_carrier_data.php | 49 +++++++++++++++++++ .../shipping_with_carrier_data_rollback.php | 9 ++++ 3 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 dev/tests/integration/testsuite/Magento/Shipping/_files/shipping_with_carrier_data.php create mode 100644 dev/tests/integration/testsuite/Magento/Shipping/_files/shipping_with_carrier_data_rollback.php diff --git a/dev/tests/integration/testsuite/Magento/Shipping/Block/Adminhtml/Order/AddToPackageTest.php b/dev/tests/integration/testsuite/Magento/Shipping/Block/Adminhtml/Order/AddToPackageTest.php index 0455181d42b00..fbbc6ef25cc09 100644 --- a/dev/tests/integration/testsuite/Magento/Shipping/Block/Adminhtml/Order/AddToPackageTest.php +++ b/dev/tests/integration/testsuite/Magento/Shipping/Block/Adminhtml/Order/AddToPackageTest.php @@ -6,12 +6,15 @@ namespace Magento\Shipping\Block\Adminhtml\Order; use Magento\Backend\Block\Template; +use Magento\Framework\Api\SearchCriteria; +use Magento\Framework\Api\SearchCriteriaBuilder; use Magento\Framework\ObjectManagerInterface; use Magento\Framework\Registry; -use Magento\Sales\Api\Data\OrderInterfaceFactory; +use Magento\Sales\Api\Data\OrderInterface; use Magento\Sales\Api\Data\ShipmentTrackInterface; use Magento\TestFramework\Helper\Bootstrap; use PHPUnit\Framework\TestCase; +use Magento\Sales\Api\OrderRepositoryInterface; /** * Class verifies packaging popup. @@ -20,34 +23,54 @@ */ class AddToPackageTest extends TestCase { + /** + * @var OrderRepositoryInterface + */ + private $orderRepository; + /** @var ObjectManagerInterface */ private $objectManager; /** @var Registry */ private $registry; - /** - * @var OrderInterfaceFactory|mixed - */ - private $orderFactory; protected function setUp(): void { $this->objectManager = Bootstrap::getObjectManager(); $this->registry = $this->objectManager->get(Registry::class); - $this->orderFactory = $this->objectManager->get(OrderInterfaceFactory::class); + $this->orderRepository = $this->objectManager->get(OrderRepositoryInterface::class); + } + + /** + * Loads order entity by provided order increment ID. + * + * @param string $incrementId + * @return OrderInterface + */ + private function getOrderByIncrementId(string $incrementId) : OrderInterface + { + /** @var SearchCriteria $searchCriteria */ + $searchCriteria = $this->objectManager->get(SearchCriteriaBuilder::class) + ->addFilter('increment_id', $incrementId) + ->create(); + + $items = $this->orderRepository->getList($searchCriteria) + ->getItems(); + + return array_pop($items); } /** * Test that Packaging popup renders * - * @magentoDataFixture Magento/GraphQl/Sales/_files/customer_order_with_ups_shipping.php + * @magentoDataFixture Magento/Shipping/_files/shipping_with_carrier_data.php */ public function testGetCommentsHtml() { /** @var Template $block */ $block = $this->objectManager->get(Packaging::class); - $order = $this->orderFactory->create()->loadByIncrementId('100000001'); + $order = $this->getOrderByIncrementId('100000001'); /** @var ShipmentTrackInterface $track */ $shipment = $order->getShipmentsCollection()->getFirstItem(); diff --git a/dev/tests/integration/testsuite/Magento/Shipping/_files/shipping_with_carrier_data.php b/dev/tests/integration/testsuite/Magento/Shipping/_files/shipping_with_carrier_data.php new file mode 100644 index 0000000000000..736487ac5c006 --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Shipping/_files/shipping_with_carrier_data.php @@ -0,0 +1,49 @@ +requireDataFixture('Magento/Sales/_files/order_with_customer.php'); + +$objectManager = Bootstrap::getObjectManager(); +/** @var Transaction $transaction */ +$transaction = $objectManager->get(Transaction::class); +/** @var ProductRepositoryInterface $productRepository */ +$productRepository = $objectManager->create(ProductRepositoryInterface::class); +$product = $productRepository->get('simple'); +/** @var Order $order */ +$order = $objectManager->get(OrderInterfaceFactory::class)->create()->loadByIncrementId('100000001'); +$order->setShippingDescription('UPS Next Day Air') + ->setShippingMethod('ups_11') + ->setShippingAmount(0) + ->setCouponCode('1234567890') + ->setDiscountDescription('1234567890'); + +/** @var OrderRepositoryInterface $orderRepository */ +$orderRepository = $objectManager->create(OrderRepositoryInterface::class); +$orderRepository->save($order); + +$shipmentItems = []; +foreach ($order->getItems() as $orderItem) { + $shipmentItems[$orderItem->getId()] = $orderItem->getQtyOrdered(); +} +$tracking = [ + 'carrier_code' => 'ups', + 'title' => 'United Parcel Service', + 'number' => '987654321' +]; + +$shipment = $objectManager->get(ShipmentFactory::class)->create($order, $shipmentItems, [$tracking]); +$shipment->register(); +$transaction->addObject($shipment)->addObject($order)->save(); diff --git a/dev/tests/integration/testsuite/Magento/Shipping/_files/shipping_with_carrier_data_rollback.php b/dev/tests/integration/testsuite/Magento/Shipping/_files/shipping_with_carrier_data_rollback.php new file mode 100644 index 0000000000000..bbb90e0326aec --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Shipping/_files/shipping_with_carrier_data_rollback.php @@ -0,0 +1,9 @@ +requireDataFixture('Magento/Sales/_files/order_with_customer_rollback.php');