Skip to content

Commit eed27d6

Browse files
author
He, Joan(johe)
committed
Merge pull request #220 from magento-extensibility/MAGETWO-34168-init-param-always-use
[Extensibility] sprint 49 bugs
2 parents af0a10d + cc86ae0 commit eed27d6

File tree

3 files changed

+169
-3
lines changed

3 files changed

+169
-3
lines changed

app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Validate.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ public function execute()
1919
$variable = $this->_initVariable();
2020
$variable->addData($this->getRequest()->getPost('variable'));
2121
$result = $variable->validate();
22-
if ($result !== true && is_string($result)) {
23-
$this->messageManager->addError($result);
22+
if ($result instanceof \Magento\Framework\Phrase) {
23+
$this->messageManager->addError($result->getText());
2424
$layout = $this->layoutFactory->create();
2525
$layout->initMessages();
2626
$response->setError(true);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Variable\Test\Unit\Controller\Adminhtml\System\Variable;
7+
8+
/**
9+
* Class ValidateTest
10+
*/
11+
class ValidateTest extends \PHPUnit_Framework_TestCase
12+
{
13+
/**
14+
* @var \Magento\Variable\Model\Variable|\PHPUnit_Framework_MockObject_MockObject
15+
*/
16+
protected $variableMock;
17+
18+
/**
19+
* @var \Magento\Framework\View\LayoutInterface|\PHPUnit_Framework_MockObject_MockObject
20+
*/
21+
protected $layoutMock;
22+
23+
/**
24+
* @var \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject
25+
*/
26+
protected $requestMock;
27+
28+
/**
29+
* @var \Magento\Variable\Controller\Adminhtml\System\Variable\Validate | \PHPUnit_Framework_MockObject_MockObject
30+
*/
31+
protected $validateMock;
32+
33+
/**
34+
* @var \Magento\Framework\Controller\Result\Json | \PHPUnit_Framework_MockObject_MockObject
35+
*/
36+
protected $resultJsonMock;
37+
38+
/**
39+
* @var \Magento\Framework\Message\ManagerInterface | \PHPUnit_Framework_MockObject_MockObject
40+
*/
41+
protected $messageManagerMock;
42+
43+
protected function setUp()
44+
{
45+
$this->validateMock = $this->getMockBuilder('Magento\Variable\Controller\Adminhtml\System\Variable\Validate')
46+
->disableOriginalConstructor()
47+
->getMock();
48+
49+
$this->variableMock = $this->getMockBuilder('Magento\Variable\Model\Variable')
50+
->disableOriginalConstructor()
51+
->getMock();
52+
$this->variableMock->expects($this->any())
53+
->method('addData')
54+
->willReturnSelf();
55+
56+
$messagesMock = $this->getMockBuilder('Magento\Framework\View\Element\Messages')
57+
->disableOriginalConstructor()
58+
->getMock();
59+
$this->layoutMock = $this->getMockBuilder('Magento\Framework\View\LayoutInterface')
60+
->setMethods(['initMessages', 'getMessagesBlock'])
61+
->getMockForAbstractClass();
62+
$this->layoutMock->expects($this->any())
63+
->method('getMessagesBlock')
64+
->willReturn($messagesMock);
65+
$layoutFactoryMock = $this->getMockBuilder('Magento\Framework\View\LayoutFactory')
66+
->disableOriginalConstructor()
67+
->getMock();
68+
$layoutFactoryMock->expects($this->any())->method('create')->willReturn($this->layoutMock);
69+
70+
$this->requestMock = $this->getMockBuilder('Magento\Framework\App\RequestInterface')
71+
->disableOriginalConstructor()
72+
->setMethods(['getPost'])
73+
->getMockForAbstractClass();
74+
$responseMock = $this->getMockBuilder('Magento\Framework\App\ResponseInterface')
75+
->setMethods(['setError', 'setHtmlMessage'])
76+
->getMockForAbstractClass();
77+
$this->messageManagerMock = $this->getMockBuilder('Magento\Framework\Message\ManagerInterface')
78+
->getMockForAbstractClass();
79+
$contextMock = $this->getMockBuilder('Magento\Backend\App\Action\Context')
80+
->disableOriginalConstructor()
81+
->getMock();
82+
$contextMock->expects($this->any())
83+
->method('getRequest')->will($this->returnValue($this->requestMock));
84+
$contextMock->expects($this->any())
85+
->method('getResponse')->will($this->returnValue($responseMock));
86+
$contextMock->expects($this->any())
87+
->method('getMessageManager')->will($this->returnValue($this->messageManagerMock));
88+
89+
$this->resultJsonMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Json')
90+
->disableOriginalConstructor()
91+
->getMock();
92+
$resultJsonFactoryMock = $this->getMockBuilder('Magento\Framework\Controller\Result\JsonFactory')
93+
->disableOriginalConstructor()
94+
->getMock();
95+
$resultJsonFactoryMock->expects($this->any())->method('create')->willReturn($this->resultJsonMock);
96+
97+
$coreRegistryMock = $this->getMockBuilder('Magento\Framework\Registry')
98+
->disableOriginalConstructor()
99+
->getMock();
100+
101+
$this->validateMock = $this->getMockBuilder('Magento\Variable\Controller\Adminhtml\System\Variable\Validate')
102+
->setConstructorArgs(
103+
[
104+
$contextMock,
105+
$coreRegistryMock,
106+
$this->getMock('Magento\Backend\Model\View\Result\ForwardFactory', [], [], '', false),
107+
$resultJsonFactoryMock,
108+
$this->getMock('Magento\Framework\View\Result\PageFactory', [], [], '', false),
109+
$layoutFactoryMock,
110+
]
111+
)->setMethods(['_initVariable'])
112+
->getMock();
113+
$this->validateMock->expects($this->any())
114+
->method('_initVariable')
115+
->willReturn($this->variableMock);
116+
117+
}
118+
119+
/**
120+
* @param mixed $result
121+
* @param string[] $responseArray
122+
* @dataProvider executeDataProvider
123+
*/
124+
public function testExecute($result, $responseArray)
125+
{
126+
$getParamMap = [
127+
['variable_id', null, null],
128+
['store', 0, 0],
129+
];
130+
131+
$this->requestMock->expects($this->any())
132+
->method('getParam')->willReturnMap($getParamMap);
133+
$this->requestMock->expects($this->any())
134+
->method('getPost')->with('variable')->will($this->returnValue([]));
135+
136+
$this->variableMock->expects($this->any())
137+
->method('validate')
138+
->willReturn($result);
139+
140+
if ($result instanceof \Magento\Framework\Phrase) {
141+
$this->messageManagerMock->expects($this->once())
142+
->method('addError')
143+
->with($result->getText());
144+
$this->layoutMock->expects($this->once())
145+
->method('initMessages');
146+
}
147+
$this->resultJsonMock->expects($this->once())
148+
->method('setData')
149+
->with($responseArray);
150+
151+
$this->validateMock->execute();
152+
}
153+
154+
/**
155+
* @return array
156+
*/
157+
public function executeDataProvider()
158+
{
159+
return [
160+
[ false, ['error' => false]],
161+
[ true, ['error' => false]],
162+
[ __('Variable Code must be unique.'), ['error' => true, 'html_message' => null]],
163+
[ __('Validation has failed.'), ['error' => true, 'html_message' => null]],
164+
];
165+
}
166+
}

lib/internal/Magento/Framework/App/ObjectManagerFactory.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public function __construct(DirectoryList $directoryList, DriverPool $driverPool
101101
public function create(array $arguments)
102102
{
103103
$deploymentConfig = $this->createDeploymentConfig($this->directoryList, $arguments);
104-
104+
$arguments = array_merge($deploymentConfig->get(), $arguments);
105105
$definitionFactory = new \Magento\Framework\ObjectManager\DefinitionFactory(
106106
$this->driverPool->getDriver(DriverPool::FILE),
107107
$this->directoryList->getPath(DirectoryList::DI),

0 commit comments

Comments
 (0)