ShipmentDocumentFactoryTest.php 2.42 KB
Newer Older
Ketan's avatar
Ketan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
declare(strict_types=1);

namespace Magento\Sales\Model\Order;

use Magento\Sales\Api\Data\ShipmentCreationArgumentsExtensionInterfaceFactory;
use Magento\Sales\Api\Data\ShipmentCreationArgumentsInterface;
use Magento\Sales\Model\Order;
use Magento\TestFramework\Helper\Bootstrap;
use PHPUnit\Framework\TestCase;

/**
 * Provide tests for shipment document factory.
 */
class ShipmentDocumentFactoryTest extends TestCase
{
    /**
     * @var Order
     */
    private $order;

    /**
     * @var ShipmentDocumentFactory
     */
    private $shipmentDocumentFactory;

    /**
     * @var ShipmentCreationArgumentsInterface
     */
    private $shipmentCreationArgumentsInterface;

    /**
     * @var ShipmentCreationArgumentsExtensionInterfaceFactory
     */
    private $shipmentCreationArgumentsExtensionInterfaceFactory;

    /**
     * @inheritdoc
     */
    protected function setUp(): void
    {
        $objectManager = Bootstrap::getObjectManager();

        $this->order = $objectManager->create(Order::class);
        $this->shipmentDocumentFactory = $objectManager->create(ShipmentDocumentFactory::class);
        $this->shipmentCreationArgumentsInterface = $objectManager
            ->create(ShipmentCreationArgumentsInterface::class);
        $this->shipmentCreationArgumentsExtensionInterfaceFactory = $objectManager
            ->create(ShipmentCreationArgumentsExtensionInterfaceFactory::class);
    }

    /**
     * Create shipment with shipment creation arguments.
     *
     * @magentoDataFixture Magento/Sales/_files/order.php
     */
    public function testCreate(): void
    {
        $order = $this->order->loadByIncrementId('100000001');
        $argumentsExtensionAttributes = $this->shipmentCreationArgumentsExtensionInterfaceFactory->create([
            'data' => ['test_attribute_value' => 'test_value']
        ]);
        $this->shipmentCreationArgumentsInterface->setExtensionAttributes($argumentsExtensionAttributes);
        $shipment = $this->shipmentDocumentFactory->create(
            $order,
            [],
            [],
            null,
            false,
            [],
            $this->shipmentCreationArgumentsInterface
        );
        $shipmentExtensionAttributes = $shipment->getExtensionAttributes();
        self::assertEquals('test_value', $shipmentExtensionAttributes->getTestAttributeValue());
    }
}