Skip to content

Commit c53bae2

Browse files
committed
Merge remote-tracking branch 'origin/MAGETWO-57007' into 2.1-develop-pr32
2 parents 9a2fbca + 91896c7 commit c53bae2

File tree

1 file changed

+191
-0
lines changed

1 file changed

+191
-0
lines changed
Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\ConfigurableProduct\Test\Unit\Pricing\Render;
8+
9+
use Magento\Catalog\Model\Product\Pricing\Renderer\SalableResolverInterface;
10+
use Magento\ConfigurableProduct\Pricing\Price\ConfigurableOptionsProviderInterface;
11+
use Magento\ConfigurableProduct\Pricing\Price\LowestPriceOptionsProviderInterface;
12+
use Magento\Framework\ObjectManagerInterface;
13+
14+
/**
15+
* Tests \Magento\ConfigurableProduct\Pricing\Render\TierPriceBox.
16+
*
17+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
18+
*/
19+
class TierPriceBoxTest extends \PHPUnit_Framework_TestCase
20+
{
21+
/** @var \Magento\ConfigurableProduct\Pricing\Render\TierPriceBox */
22+
private $priceBox;
23+
24+
/** @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager */
25+
private $objectManager;
26+
27+
/** @var \Magento\Framework\View\Element\Template\Context||\PHPUnit_Framework_MockObject_MockObject */
28+
private $contextMock;
29+
30+
/** @var \Magento\Catalog\Model\Product||\PHPUnit_Framework_MockObject_MockObject */
31+
private $saleableItemMock;
32+
33+
/** @var \Magento\Framework\Pricing\Price\PriceInterface||\PHPUnit_Framework_MockObject_MockObject */
34+
private $priceMock;
35+
36+
/** @var \Magento\Framework\Pricing\Render\RendererPool||\PHPUnit_Framework_MockObject_MockObject */
37+
private $rendererPoolMock;
38+
39+
/** @var ConfigurableOptionsProviderInterface||\PHPUnit_Framework_MockObject_MockObject */
40+
private $configurableOptionsProviderMock;
41+
42+
/** @var LowestPriceOptionsProviderInterface||\PHPUnit_Framework_MockObject_MockObject */
43+
private $lowestPriceOptionsProviderMock;
44+
45+
/** @var \Magento\Framework\Module\Manager|\PHPUnit_Framework_MockObject_MockObject */
46+
private $moduleManagerMock;
47+
48+
/** @var SalableResolverInterface|\PHPUnit_Framework_MockObject_MockObject */
49+
private $salableResolverMock;
50+
51+
protected function setUp()
52+
{
53+
$eventManager = $this->getMock(\Magento\Framework\Event\Test\Unit\ManagerStub::class, [], [], '', false);
54+
$scopeConfigMock = $this->getMockForAbstractClass(\Magento\Framework\App\Config\ScopeConfigInterface::class);
55+
$this->contextMock = $this->getMockBuilder(\Magento\Framework\View\Element\Template\Context::class)
56+
->disableOriginalConstructor()
57+
->getMock();
58+
$this->contextMock->expects($this->any())
59+
->method('getEventManager')
60+
->will($this->returnValue($eventManager));
61+
$this->contextMock->expects($this->any())
62+
->method('getScopeConfig')
63+
->will($this->returnValue($scopeConfigMock));
64+
65+
$this->saleableItemMock = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)
66+
->setMethods(['getCanShowPrice', 'getPriceInfo'])
67+
->disableOriginalConstructor()
68+
->getMock();
69+
$this->priceMock = $this->getMockBuilder(\Magento\Framework\Pricing\Price\PriceInterface::class)
70+
->disableOriginalConstructor()
71+
->getMock();
72+
$this->rendererPoolMock = $this->getMockBuilder(\Magento\Framework\Pricing\Render\RendererPool::class)
73+
->disableOriginalConstructor()
74+
->getMock();
75+
$this->configurableOptionsProviderMock = $this->getMockBuilder(ConfigurableOptionsProviderInterface::class)
76+
->disableOriginalConstructor()
77+
->getMock();
78+
$this->lowestPriceOptionsProviderMock = $this->getMockBuilder(LowestPriceOptionsProviderInterface::class)
79+
->disableOriginalConstructor()
80+
->getMock();
81+
$this->salableResolverMock = $this->getMockBuilder(SalableResolverInterface::class)
82+
->disableOriginalConstructor()
83+
->getMock();
84+
$this->moduleManagerMock = $this->getMockBuilder(\Magento\Framework\Module\Manager::class)
85+
->setMethods(['isEnabled', 'isOutputEnabled'])
86+
->disableOriginalConstructor()
87+
->getMock();
88+
89+
/** @var ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject $objectManagerMock */
90+
$objectManagerMock = $this->getMockBuilder(ObjectManagerInterface::class)
91+
->setMethods(['get'])
92+
->disableOriginalConstructor()
93+
->getMockForAbstractClass();
94+
$objectManagerMock->expects(self::at(0))->method('get')->with(SalableResolverInterface::class)
95+
->willReturn($this->salableResolverMock);
96+
$objectManagerMock->expects(self::at(1))->method('get')->with(\Magento\Framework\Module\Manager::class)
97+
->willReturn($this->moduleManagerMock);
98+
\Magento\Framework\App\ObjectManager::setInstance($objectManagerMock);
99+
100+
$this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
101+
102+
$this->priceBox = $this->objectManager->getObject(
103+
\Magento\ConfigurableProduct\Pricing\Render\TierPriceBox::class,
104+
[
105+
'context' => $this->contextMock,
106+
'saleableItem' => $this->saleableItemMock,
107+
'price' => $this->priceMock,
108+
'rendererPool' => $this->rendererPoolMock,
109+
'configurableOptionsProvider' => $this->configurableOptionsProviderMock,
110+
'data' => [],
111+
'lowestPriceOptionsProvider' => $this->lowestPriceOptionsProviderMock,
112+
]
113+
);
114+
}
115+
116+
/**
117+
* Covers toHtml() with Msrp module disabled.
118+
*
119+
* @return void
120+
*/
121+
public function testToHtmlMsrpDisabled()
122+
{
123+
$this->saleableItemMock->expects($this->any())
124+
->method('getCanShowPrice')
125+
->willReturn(true);
126+
$this->priceMock->expects($this->any())
127+
->method('getPriceCode')
128+
->will($this->returnValue(\Magento\Catalog\Pricing\Price\FinalPrice::PRICE_CODE));
129+
$this->moduleManagerMock->expects($this->any())
130+
->method('isEnabled')
131+
->with('Magento_Msrp')
132+
->willReturn(false);
133+
134+
$result = $this->priceBox->toHtml();
135+
136+
$this->assertStringStartsWith('<div', $result);
137+
}
138+
139+
/**
140+
* Covers toHtml() with Msrp module enabled.
141+
*
142+
* @return void
143+
*/
144+
public function testToHtmlMsrpEnabled()
145+
{
146+
$this->moduleManagerMock->expects($this->any())
147+
->method('isEnabled')
148+
->with('Magento_Msrp')
149+
->willReturn(true);
150+
$this->moduleManagerMock->expects($this->any())
151+
->method('isOutputEnabled')
152+
->with('Magento_Msrp')
153+
->willReturn(true);
154+
$priceInterfaceMock = $this->getMockBuilder(Magento\Framework\Pricing\Price\PriceInterface::class)
155+
->setMethods(['canApplyMsrp', 'isMinimalPriceLessMsrp'])
156+
->disableOriginalConstructor()
157+
->getMock();
158+
$priceInterfaceMock->expects($this->once())
159+
->method('canApplyMsrp')
160+
->with($this->saleableItemMock)
161+
->willReturn(true);
162+
$priceInterfaceMock->expects($this->once())
163+
->method('isMinimalPriceLessMsrp')
164+
->with($this->saleableItemMock)
165+
->willReturn(true);
166+
$priceInfoMock = $this->getMockBuilder(\Magento\Framework\Pricing\PriceInfoInterface::class)
167+
->disableOriginalConstructor()
168+
->getMock();
169+
$priceInfoMock->expects($this->once())
170+
->method('getPrice')
171+
->with('msrp_price')
172+
->willReturn($priceInterfaceMock);
173+
$this->saleableItemMock->expects($this->any())
174+
->method('getPriceInfo')
175+
->willReturn($priceInfoMock);
176+
177+
$this->assertEmpty($this->priceBox->toHtml());
178+
}
179+
180+
/**
181+
* @inheritdoc
182+
*/
183+
protected function tearDown()
184+
{
185+
// reset ObjectManager instance.
186+
$reflection = new \ReflectionClass(\Magento\Framework\App\ObjectManager::class);
187+
$reflectionProperty = $reflection->getProperty('_instance');
188+
$reflectionProperty->setAccessible(true);
189+
$reflectionProperty->setValue(null, null);
190+
}
191+
}

0 commit comments

Comments
 (0)