98 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
 | 
						|
declare(strict_types=1);
 | 
						|
 | 
						|
namespace Magento\Sales\Service\V1;
 | 
						|
 | 
						|
use Magento\Framework\ObjectManagerInterface;
 | 
						|
use Magento\Framework\Webapi\Rest\Request;
 | 
						|
use Magento\Sales\Api\Data\OrderInterface;
 | 
						|
use Magento\Sales\Api\OrderRepositoryInterface;
 | 
						|
use Magento\Sales\Model\Order;
 | 
						|
use Magento\TestFramework\Helper\Bootstrap;
 | 
						|
use Magento\TestFramework\TestCase\WebapiAbstract;
 | 
						|
 | 
						|
/**
 | 
						|
 * Test for hold order.
 | 
						|
 */
 | 
						|
class OrderHoldTest extends WebapiAbstract
 | 
						|
{
 | 
						|
    private const SERVICE_VERSION = 'V1';
 | 
						|
 | 
						|
    private const SERVICE_NAME = 'salesOrderManagementV1';
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var ObjectManagerInterface
 | 
						|
     */
 | 
						|
    private $objectManager;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var OrderRepositoryInterface
 | 
						|
     */
 | 
						|
    private $orderRepository;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @inheritDoc
 | 
						|
     */
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $this->objectManager = Bootstrap::getObjectManager();
 | 
						|
        $this->orderRepository = $this->objectManager->get(OrderRepositoryInterface::class);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Test hold order and check order items product options after.
 | 
						|
     *
 | 
						|
     * @magentoApiDataFixture Magento/Sales/_files/order_with_two_configurable_variations.php
 | 
						|
     *
 | 
						|
     * @return void
 | 
						|
     */
 | 
						|
    public function testOrderHold(): void
 | 
						|
    {
 | 
						|
        $order = $this->objectManager->get(Order::class)
 | 
						|
            ->loadByIncrementId('100000001');
 | 
						|
        $orderId = $order->getId();
 | 
						|
        $orderItemsProductOptions = $this->getOrderItemsProductOptions($order);
 | 
						|
 | 
						|
        $serviceInfo = [
 | 
						|
            'rest' => [
 | 
						|
                'resourcePath' => '/V1/orders/' . $orderId . '/hold',
 | 
						|
                'httpMethod' => Request::HTTP_METHOD_POST,
 | 
						|
            ],
 | 
						|
            'soap' => [
 | 
						|
                'service' => self::SERVICE_NAME,
 | 
						|
                'serviceVersion' => self::SERVICE_VERSION,
 | 
						|
                'operation' => self::SERVICE_NAME . 'hold',
 | 
						|
            ],
 | 
						|
        ];
 | 
						|
        $requestData = ['id' => $orderId];
 | 
						|
        $result = $this->_webApiCall($serviceInfo, $requestData);
 | 
						|
        $this->assertTrue($result);
 | 
						|
 | 
						|
        $this->assertEquals(
 | 
						|
            $orderItemsProductOptions,
 | 
						|
            $this->getOrderItemsProductOptions($this->orderRepository->get($orderId))
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Return order items product options
 | 
						|
     *
 | 
						|
     * @param OrderInterface $order
 | 
						|
     * @return array
 | 
						|
     */
 | 
						|
    private function getOrderItemsProductOptions(OrderInterface $order): array
 | 
						|
    {
 | 
						|
        $result = [];
 | 
						|
        foreach ($order->getItems() as $orderItem) {
 | 
						|
            $result[] = $orderItem->getProductOptions();
 | 
						|
        }
 | 
						|
 | 
						|
        return $result;
 | 
						|
    }
 | 
						|
}
 |