Skip to content

Commit 2c6da09

Browse files
committed
Merge branch 'MAGETWO-63454' into 2.1.8-develop-pr7
2 parents f61d5e8 + 9fcdeaa commit 2c6da09

File tree

6 files changed

+310
-40
lines changed

6 files changed

+310
-40
lines changed

app/code/Magento/Sales/Model/Order/Address/Renderer.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public function __construct(
4848
*/
4949
public function format(Address $address, $type)
5050
{
51+
$this->addressConfig->setStore($address->getOrder()->getStoreId());
5152
$formatType = $this->addressConfig->getFormatByCode($type);
5253
if (!$formatType || !$formatType->getRenderer()) {
5354
return null;
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Sales\Test\Unit\Model\Order\Address;
7+
8+
use Magento\Sales\Model\Order\Address\Renderer as OrderAddressRenderer;
9+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
10+
use Magento\Customer\Model\Address\Config as CustomerAddressConfig;
11+
use Magento\Framework\Event\ManagerInterface as EventManager;
12+
use Magento\Sales\Model\Order\Address as OrderAddress;
13+
use Magento\Sales\Model\Order;
14+
use Magento\Customer\Block\Address\Renderer\RendererInterface as CustomerAddressBlockRenderer;
15+
use Magento\Framework\DataObject;
16+
17+
/**
18+
* Order address render test
19+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
20+
*/
21+
class RendererTest extends \PHPUnit_Framework_TestCase
22+
{
23+
/**
24+
* @var OrderAddressRenderer
25+
*/
26+
private $orderAddressRenderer;
27+
28+
/**
29+
* @var ObjectManagerHelper
30+
*/
31+
private $objectManagerHelper;
32+
33+
/**
34+
* @var CustomerAddressConfig|\PHPUnit_Framework_MockObject_MockObject
35+
*/
36+
private $customerAddressConfigMock;
37+
38+
/**
39+
* @var EventManager|\PHPUnit_Framework_MockObject_MockObject
40+
*/
41+
private $eventManagerMock;
42+
43+
/**
44+
* @var OrderAddress|\PHPUnit_Framework_MockObject_MockObject
45+
*/
46+
private $orderAddressMock;
47+
48+
/**
49+
* @var Order|\PHPUnit_Framework_MockObject_MockObject
50+
*/
51+
private $orderMock;
52+
53+
/**
54+
* @var CustomerAddressBlockRenderer|\PHPUnit_Framework_MockObject_MockObject
55+
*/
56+
private $customerAddressBlockRendererMock;
57+
58+
protected function setUp()
59+
{
60+
$this->customerAddressConfigMock = $this->getMockBuilder(CustomerAddressConfig::class)
61+
->disableOriginalConstructor()
62+
->getMock();
63+
$this->eventManagerMock = $this->getMockBuilder(EventManager::class)
64+
->getMockForAbstractClass();
65+
$this->orderAddressMock = $this->getMockBuilder(OrderAddress::class)
66+
->disableOriginalConstructor()
67+
->getMock();
68+
$this->orderMock = $this->getMockBuilder(Order::class)
69+
->disableOriginalConstructor()
70+
->getMock();
71+
$this->customerAddressBlockRendererMock = $this->getMockBuilder(CustomerAddressBlockRenderer::class)
72+
->getMockForAbstractClass();
73+
74+
$this->orderAddressMock->expects(static::any())
75+
->method('getOrder')
76+
->willReturn($this->orderMock);
77+
78+
$this->objectManagerHelper = new ObjectManagerHelper($this);
79+
$this->orderAddressRenderer = $this->objectManagerHelper->getObject(
80+
OrderAddressRenderer::class,
81+
[
82+
'addressConfig' => $this->customerAddressConfigMock,
83+
'eventManager' => $this->eventManagerMock
84+
]
85+
);
86+
}
87+
88+
public function testFormat()
89+
{
90+
$type = 'html';
91+
$formatType = new DataObject(['renderer' => $this->customerAddressBlockRendererMock]);
92+
$addressData = ['address', 'data'];
93+
$result = 'result string';
94+
95+
$this->setStoreExpectations(1);
96+
$this->customerAddressConfigMock->expects(static::atLeastOnce())
97+
->method('getFormatByCode')
98+
->with($type)
99+
->willReturn($formatType);
100+
$this->eventManagerMock->expects(static::once())
101+
->method('dispatch')
102+
->with('customer_address_format', ['type' => $formatType, 'address' => $this->orderAddressMock]);
103+
$this->orderAddressMock->expects(static::atLeastOnce())
104+
->method('getData')
105+
->willReturn($addressData);
106+
$this->customerAddressBlockRendererMock->expects(static::once())
107+
->method('renderArray')
108+
->with($addressData, null)
109+
->willReturn($result);
110+
111+
$this->assertEquals($result, $this->orderAddressRenderer->format($this->orderAddressMock, $type));
112+
}
113+
114+
public function testFormatNoRenderer()
115+
{
116+
$type = 'html';
117+
118+
$this->setStoreExpectations(1);
119+
$this->customerAddressConfigMock->expects(static::atLeastOnce())
120+
->method('getFormatByCode')
121+
->with($type)
122+
->willReturn(null);
123+
$this->eventManagerMock->expects(static::never())
124+
->method('dispatch');
125+
126+
$this->assertEquals(null, $this->orderAddressRenderer->format($this->orderAddressMock, $type));
127+
}
128+
129+
/**
130+
* Set expectations for store
131+
*
132+
* @param string|int $storeId
133+
* @return void
134+
*/
135+
private function setStoreExpectations($storeId)
136+
{
137+
$this->orderMock->expects(static::atLeastOnce())
138+
->method('getStoreId')
139+
->willReturn($storeId);
140+
$this->customerAddressConfigMock->expects(static::atLeastOnce())
141+
->method('setStore')
142+
->with($storeId)
143+
->willReturnSelf();
144+
}
145+
}
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Sales\Model\Order\Address;
7+
8+
use Magento\TestFramework\Helper\Bootstrap;
9+
use Magento\Framework\ObjectManagerInterface;
10+
use Magento\Sales\Model\Order\Address\Renderer as OrderAddressRenderer;
11+
use Magento\Config\Model\ResourceModel\Config as ConfigResourceModel;
12+
use Magento\Framework\App\Config;
13+
use Magento\Store\Model\Store;
14+
use Magento\Sales\Model\Order\Address as OrderAddress;
15+
use Magento\Sales\Model\Order;
16+
17+
/**
18+
* Order address render test
19+
*/
20+
class RendererTest extends \PHPUnit_Framework_TestCase
21+
{
22+
/**
23+
* @var ObjectManagerInterface
24+
*/
25+
private $objectManager;
26+
27+
/**
28+
* @var OrderAddressRenderer
29+
*/
30+
private $orderAddressRenderer;
31+
32+
/**
33+
* @var ConfigResourceModel
34+
*/
35+
private $configResourceModel;
36+
37+
/**
38+
* @var Config
39+
*/
40+
private $config;
41+
42+
protected function setUp()
43+
{
44+
$this->objectManager = Bootstrap::getObjectManager();
45+
$this->orderAddressRenderer = $this->objectManager->get(OrderAddressRenderer::class);
46+
$this->configResourceModel = $this->objectManager->get(ConfigResourceModel::class);
47+
$this->config = $this->objectManager->get(Config::class);
48+
}
49+
50+
/**
51+
* @magentoDataFixture Magento/Sales/_files/order_fixture_store.php
52+
* @magentoDbIsolation enabled
53+
* @magentoAppIsolation enabled
54+
*/
55+
public function testFormat()
56+
{
57+
$addressTemplates = [
58+
'text' => 'text_customized',
59+
'oneline' => 'oneline_customized',
60+
'html' => 'html_customized',
61+
'pdf' => 'pdf_customized'
62+
];
63+
64+
/** @var Store $store */
65+
$store = $this->objectManager->create(Store::class);
66+
$storeId = $store->load('fixturestore')->getStoreId();
67+
68+
$this->configResourceModel->saveConfig(
69+
'customer/address_templates/text',
70+
$addressTemplates['text'],
71+
'stores',
72+
$storeId
73+
);
74+
$this->configResourceModel->saveConfig(
75+
'customer/address_templates/oneline',
76+
$addressTemplates['oneline'],
77+
'stores',
78+
$storeId
79+
);
80+
$this->configResourceModel->saveConfig(
81+
'customer/address_templates/html',
82+
$addressTemplates['html'],
83+
'stores',
84+
$storeId
85+
);
86+
$this->configResourceModel->saveConfig(
87+
'customer/address_templates/pdf',
88+
$addressTemplates['pdf'],
89+
'stores',
90+
$storeId
91+
);
92+
$this->config->clean();
93+
94+
/** @var Order $order */
95+
$order = $this->objectManager->create(Order::class)
96+
->loadByIncrementId('100000004');
97+
98+
/** @var OrderAddress $address */
99+
$address = $order->getBillingAddress();
100+
101+
$this->assertEquals($addressTemplates['text'], $this->orderAddressRenderer->format($address, 'text'));
102+
$this->assertEquals($addressTemplates['oneline'], $this->orderAddressRenderer->format($address, 'oneline'));
103+
$this->assertEquals($addressTemplates['html'], $this->orderAddressRenderer->format($address, 'html'));
104+
$this->assertEquals($addressTemplates['pdf'], $this->orderAddressRenderer->format($address, 'pdf'));
105+
}
106+
}

dev/tests/integration/testsuite/Magento/Sales/_files/order_fixture_store.php

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,55 +4,54 @@
44
* See COPYING.txt for license details.
55
*/
66

7-
// @codingStandardsIgnoreFile
7+
use Magento\TestFramework\Helper\Bootstrap as BootstrapHelper;
8+
use Magento\Framework\Indexer\IndexerRegistry;
9+
use Magento\CatalogSearch\Model\Indexer\Fulltext as FulltextIndexer;
10+
use Magento\Catalog\Model\Product;
11+
use Magento\Sales\Model\Order\Address as OrderAddress;
12+
use Magento\Sales\Model\Order\Payment as OrderPayment;
13+
use Magento\Sales\Model\Order\Item as OrderItem;
14+
use Magento\Sales\Model\Order;
15+
use Magento\Store\Model\StoreManagerInterface;
816

9-
require __DIR__ . '/../../../Magento/Store/_files/core_fixturestore.php';
17+
require __DIR__ . '/../../Store/_files/core_fixturestore.php';
1018

11-
require __DIR__ . '/../../../Magento/Catalog/_files/product_simple_duplicated.php';
12-
/** @var \Magento\Catalog\Model\Product $product */
19+
$objectManager = BootstrapHelper::getObjectManager();
1320

14-
$addressData = include __DIR__ . '/address_data.php';
21+
$objectManager->get(IndexerRegistry::class)
22+
->get(FulltextIndexer::INDEXER_ID)
23+
->reindexAll();
24+
25+
require __DIR__ . '/../../Catalog/_files/product_simple_duplicated.php';
26+
/** @var Product $product */
1527

16-
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
28+
$addressData = include __DIR__ . '/address_data.php';
1729

18-
$billingAddress = $objectManager->create('Magento\Sales\Model\Order\Address', ['data' => $addressData]);
30+
$billingAddress = $objectManager->create(OrderAddress::class, ['data' => $addressData]);
1931
$billingAddress->setAddressType('billing');
2032

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

24-
$payment = $objectManager->create('Magento\Sales\Model\Order\Payment');
36+
$payment = $objectManager->create(OrderPayment::class);
2537
$payment->setMethod('checkmo');
2638

27-
/** @var \Magento\Sales\Model\Order\Item $orderItem */
28-
$orderItem = $objectManager->create('Magento\Sales\Model\Order\Item');
39+
/** @var OrderItem $orderItem */
40+
$orderItem = $objectManager->create(OrderItem::class);
2941
$orderItem->setProductId($product->getId())->setQtyOrdered(2);
3042

31-
/** @var \Magento\Sales\Model\Order $order */
32-
$order = $objectManager->create('Magento\Sales\Model\Order');
33-
$order->setIncrementId(
34-
'100000004'
35-
)->setState(
36-
\Magento\Sales\Model\Order::STATE_PROCESSING
37-
)->setStatus(
38-
$order->getConfig()->getStateDefaultStatus(\Magento\Sales\Model\Order::STATE_PROCESSING)
39-
)->setSubtotal(
40-
100
41-
)->setBaseSubtotal(
42-
100
43-
)->setCustomerIsGuest(
44-
true
45-
)->setCustomerEmail(
46-
'customer@null.com'
47-
)->setBillingAddress(
48-
$billingAddress
49-
)->setShippingAddress(
50-
$shippingAddress
51-
)->setStoreId(
52-
$objectManager->get('Magento\Store\Model\StoreManagerInterface')->getStore('fixturestore')->getId()
53-
)->addItem(
54-
$orderItem
55-
)->setPayment(
56-
$payment
57-
);
43+
/** @var Order $order */
44+
$order = $objectManager->create(Order::class);
45+
$order->setIncrementId('100000004')
46+
->setState(Order::STATE_PROCESSING)
47+
->setStatus($order->getConfig()->getStateDefaultStatus(Order::STATE_PROCESSING))
48+
->setSubtotal(100)
49+
->setBaseSubtotal(100)
50+
->setCustomerIsGuest(true)
51+
->setCustomerEmail('customer@null.com')
52+
->setBillingAddress($billingAddress)
53+
->setShippingAddress($shippingAddress)
54+
->setStoreId($objectManager->get(StoreManagerInterface::class)->getStore('fixturestore')->getId())
55+
->addItem($orderItem)
56+
->setPayment($payment);
5857
$order->save();
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
use Magento\TestFramework\Helper\Bootstrap;
8+
use Magento\Framework\Indexer\IndexerRegistry;
9+
use Magento\CatalogSearch\Model\Indexer\Fulltext as FulltextIndexer;
10+
11+
require __DIR__ . '/default_rollback.php';
12+
require __DIR__ . '/../../Catalog/_files/product_simple_duplicated_rollback.php';
13+
require __DIR__ . '/../../Store/_files/core_fixturestore_rollback.php';
14+
15+
Bootstrap::getObjectManager()->get(IndexerRegistry::class)
16+
->get(FulltextIndexer::INDEXER_ID)
17+
->reindexAll();

dev/tests/integration/testsuite/Magento/Store/_files/core_fixturestore.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
use Magento\TestFramework\Helper\Bootstrap;
88

99
/** @var \Magento\Store\Model\StoreManagerInterface $storeManager */
10-
$storeManager = Bootstrap::getObjectManager()->get('Magento\Store\Model\StoreManagerInterface');
10+
$storeManager = Bootstrap::getObjectManager()->get(\Magento\Store\Model\StoreManagerInterface::class);
1111

1212
/** @var \Magento\Store\Model\Store $store */
13-
$store = Bootstrap::getObjectManager()->create('Magento\Store\Model\Store');
13+
$store = Bootstrap::getObjectManager()->create(\Magento\Store\Model\Store::class);
1414
$storeCode = 'fixturestore';
1515

1616
if (!$store->load($storeCode)->getId()) {
@@ -23,5 +23,7 @@
2323
$store->save();
2424

2525
/* Refresh stores memory cache */
26-
Bootstrap::getObjectManager()->get('Magento\Store\Model\StoreManagerInterface')->reinitStores();
26+
Bootstrap::getObjectManager()->get(\Magento\Store\Model\StoreManagerInterface::class)->reinitStores();
2727
}
28+
29+
//if test using this fixture relies on full text functionality it is required to explicitly perform re-indexation

0 commit comments

Comments
 (0)