Skip to content

Commit

Permalink
integration test
Browse files Browse the repository at this point in the history
  • Loading branch information
engcom-Charlie committed Jun 25, 2020
1 parent 7308ee2 commit 4514e0c
Showing 1 changed file with 52 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,34 +3,46 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

declare(strict_types=1);

namespace Magento\Sales\Model\ResourceModel;

use Magento\Store\Api\StoreRepositoryInterface;
use Magento\Store\Model\StoreManagerInterface;
use Magento\Framework\Event\ManagerInterface;
use Magento\Framework\ObjectManagerInterface;
use Magento\Framework\Registry;
use Magento\Sales\Api\OrderRepositoryInterface;
use Magento\Sales\Model\Order as OrderModel;
use Magento\Sales\Model\Order\Address;
use Magento\Sales\Model\Order\Item;
use Magento\Sales\Model\Order\Payment;
use Magento\Sales\Model\ResourceModel\Order\CollectionFactory as OrderCollectionFactory;
use Magento\Store\Api\StoreRepositoryInterface;
use Magento\Store\Model\StoreManagerInterface;
use Magento\TestFramework\Helper\Bootstrap;
use PHPUnit\Framework\TestCase;

/**
* Test for \Magento\Sales\Model\ResourceModel\Order.
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class OrderTest extends \PHPUnit\Framework\TestCase
class OrderTest extends TestCase
{
/**
* @var \Magento\Sales\Model\ResourceModel\Order
* @var Order
*/
protected $resourceModel;
private $resourceModel;

/**
* @var int
*/
protected $orderIncrementId;
private $orderIncrementId;

/**
* @var \Magento\Framework\ObjectManagerInterface
* @var ObjectManagerInterface
*/
protected $objectManager;
private $objectManager;

/**
* @var StoreManagerInterface
Expand All @@ -47,8 +59,9 @@ class OrderTest extends \PHPUnit\Framework\TestCase
*/
protected function setUp(): void
{
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
$this->resourceModel = $this->objectManager->create(\Magento\Sales\Model\ResourceModel\Order::class);
$this->objectManager = Bootstrap::getObjectManager();

$this->resourceModel = $this->objectManager->create(Order::class);
$this->orderIncrementId = '100000001';
$this->storeManager = $this->objectManager->get(StoreManagerInterface::class);
$this->storeRepository = $this->objectManager->get(StoreRepositoryInterface::class);
Expand All @@ -59,7 +72,7 @@ protected function setUp(): void
*/
protected function tearDown(): void
{
$registry = $this->objectManager->get(\Magento\Framework\Registry::class);
$registry = $this->objectManager->get(Registry::class);
$registry->unregister('isSecureArea');
$registry->register('isSecureArea', true);

Expand All @@ -73,14 +86,15 @@ protected function tearDown(): void

$defaultStore = $this->storeRepository->get('default');
$this->storeManager->setCurrentStore($defaultStore->getId());

parent::tearDown();
}

/**
* Test save order
*
* @magentoDataFixture Magento/Catalog/_files/product_simple.php
* @return void
*/
public function testSaveOrder()
public function testSaveOrder(): void
{
$addressData = [
'region' => 'CA',
Expand All @@ -94,31 +108,28 @@ public function testSaveOrder()
'country_id' => 'US'
];

$billingAddress = $this->objectManager->create(
\Magento\Sales\Model\Order\Address::class,
['data' => $addressData]
);
$billingAddress = $this->objectManager->create(Address::class, ['data' => $addressData]);
$billingAddress->setAddressType('billing');

$shippingAddress = clone $billingAddress;
$shippingAddress->setId(null)->setAddressType('shipping');

$payment = $this->objectManager->create(\Magento\Sales\Model\Order\Payment::class);
$payment = $this->objectManager->create(Payment::class);
$payment->setMethod('checkmo');

/** @var \Magento\Sales\Model\Order\Item $orderItem */
$orderItem = $this->objectManager->create(\Magento\Sales\Model\Order\Item::class);
/** @var Item $orderItem */
$orderItem = $this->objectManager->create(Item::class);
$orderItem->setProductId(1)
->setQtyOrdered(2)
->setBasePrice(10)
->setPrice(10)
->setRowTotal(10);

/** @var \Magento\Sales\Model\Order $order */
$order = $this->objectManager->create(\Magento\Sales\Model\Order::class);
/** @var OrderModel $order */
$order = $this->objectManager->create(OrderModel::class);
$order->setIncrementId($this->orderIncrementId)
->setState(\Magento\Sales\Model\Order::STATE_PROCESSING)
->setStatus($order->getConfig()->getStateDefaultStatus(\Magento\Sales\Model\Order::STATE_PROCESSING))
->setState(OrderModel::STATE_PROCESSING)
->setStatus($order->getConfig()->getStateDefaultStatus(OrderModel::STATE_PROCESSING))
->setSubtotal(100)
->setBaseSubtotal(100)
->setBaseGrandTotal(100)
Expand All @@ -128,7 +139,7 @@ public function testSaveOrder()
->setShippingAddress($shippingAddress)
->setStoreId(
$this->objectManager
->get(\Magento\Store\Model\StoreManagerInterface::class)
->get(StoreManagerInterface::class)
->getStore()
->getId()
)
Expand All @@ -141,26 +152,36 @@ public function testSaveOrder()
}

/**
* Check that store name with length within 255 chars can be saved in table sales_order
* Check that store name and x_forwarded_for with length within 255 chars can be saved in table sales_order
*
* @magentoDataFixture Magento/Store/_files/store_with_long_name.php
* @magentoDbIsolation disabled
* @return void
*/
public function testSaveStoreName()
public function testSaveLongNames(): void
{
$xForwardedFor = str_repeat('x', 255);

$store = $this->storeRepository->get('test_2');
$this->storeManager->setCurrentStore($store->getId());
$eventManager = $this->objectManager->get(ManagerInterface::class);
$eventManager->dispatch('store_add', ['store' => $store]);
$order = $this->objectManager->create(\Magento\Sales\Model\Order::class);
$payment = $this->objectManager->create(\Magento\Sales\Model\Order\Payment::class);
$order = $this->objectManager->create(OrderModel::class);
$payment = $this->objectManager->create(Payment::class);
$payment->setMethod('checkmo');

$order->setStoreId($store->getId())->setPayment($payment);
$order->setXForwardedFor($xForwardedFor);
$order->setPayment($payment);
$this->resourceModel->save($order);
$orderRepository = $this->objectManager->create(\Magento\Sales\Api\OrderRepositoryInterface::class);

$orderRepository = $this->objectManager->create(OrderRepositoryInterface::class);
$order = $orderRepository->get($order->getId());

$this->assertEquals(255, strlen($order->getStoreName()));
$this->assertEquals(255, strlen($order->getXForwardedFor()));

$this->assertEquals($xForwardedFor, $order->getXForwardedFor());
$this->assertStringContainsString($store->getWebsite()->getName(), $order->getStoreName());
$this->assertStringContainsString($store->getGroup()->getName(), $order->getStoreName());
}
Expand Down

0 comments on commit 4514e0c

Please sign in to comment.