Skip to content

Commit d23cb1b

Browse files
author
yuri kovsher
committed
MAGETWO-38857: Decrease crap
1 parent 0905501 commit d23cb1b

File tree

5 files changed

+147
-74
lines changed

5 files changed

+147
-74
lines changed

app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Save.php

Lines changed: 45 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
class Save extends \Magento\Sitemap\Controller\Adminhtml\Sitemap
1313
{
1414
/**
15-
* Validate path to generate
15+
* Validate path for generation
1616
*
1717
* @param array $data
1818
* @return bool
1919
* @throws \Exception
2020
*/
21-
protected function validatePathToGenerate(array $data)
21+
protected function validatePath(array $data)
2222
{
2323
if (!empty($data['sitemap_filename']) && !empty($data['sitemap_path'])) {
2424
$data['sitemap_path'] = '/' . ltrim($data['sitemap_path'], '/');
@@ -65,12 +65,12 @@ protected function clearSiteMap(\Magento\Sitemap\Model\Sitemap $model)
6565
}
6666

6767
/**
68-
* Save model
68+
* Save data
6969
*
7070
* @param array $data
71-
* @return \Magento\Backend\Model\View\Result\Redirect|\Magento\Backend\Model\View\Result\Forward
71+
* @return string|bool
7272
*/
73-
protected function saveModel($data)
73+
protected function saveData($data)
7474
{
7575
// init model and set data
7676
/** @var \Magento\Sitemap\Model\Sitemap $model */
@@ -86,27 +86,46 @@ protected function saveModel($data)
8686
$this->messageManager->addSuccess(__('You saved the sitemap.'));
8787
// clear previously saved data from session
8888
$this->_objectManager->get('Magento\Backend\Model\Session')->setFormData(false);
89+
return $model->getId();
90+
} catch (\Exception $e) {
91+
// display error message
92+
$this->messageManager->addError($e->getMessage());
93+
// save data in session
94+
$this->_objectManager->get('Magento\Backend\Model\Session')->setFormData($data);
95+
}
96+
return false;
97+
}
8998

99+
/**
100+
* Get result after saving data
101+
*
102+
* @param string|bool $id
103+
* @return \Magento\Framework\Controller\ResultInterface
104+
*/
105+
protected function getResult($id)
106+
{
107+
/** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
108+
$resultRedirect = $this->resultFactory->create(Controller\ResultFactory::TYPE_REDIRECT);
109+
if ($id) {
90110
// check if 'Save and Continue'
91111
if ($this->getRequest()->getParam('back')) {
92-
return $this->resultFactory->create(Controller\ResultFactory::TYPE_REDIRECT)
93-
->setPath('adminhtml/*/edit', ['sitemap_id' => $model->getId()]);
112+
$resultRedirect->setPath('adminhtml/*/edit', ['sitemap_id' => $id]);
113+
return $resultRedirect;
94114
}
95115
// go to grid or forward to generate action
96116
if ($this->getRequest()->getParam('generate')) {
97-
$this->getRequest()->setParam('sitemap_id', $model->getId());
98-
return $this->resultFactory->create(Controller\ResultFactory::TYPE_FORWARD)->forward('generate');
117+
$this->getRequest()->setParam('sitemap_id', $id);
118+
return $this->resultFactory->create(Controller\ResultFactory::TYPE_FORWARD)
119+
->forward('generate');
99120
}
100-
return $this->resultFactory->create(Controller\ResultFactory::TYPE_REDIRECT)->setPath('adminhtml/*/');
101-
} catch (\Exception $e) {
102-
// display error message
103-
$this->messageManager->addError($e->getMessage());
104-
// save data in session
105-
$this->_objectManager->get('Magento\Backend\Model\Session')->setFormData($data);
106-
// redirect to edit form
107-
return $this->resultFactory->create(Controller\ResultFactory::TYPE_REDIRECT)
108-
->setPath('adminhtml/*/edit', ['sitemap_id' => $this->getRequest()->getParam('sitemap_id')]);
121+
$resultRedirect->setPath('adminhtml/*/');
122+
return $resultRedirect;
109123
}
124+
$resultRedirect->setPath(
125+
'adminhtml/*/edit',
126+
['sitemap_id' => $this->getRequest()->getParam('sitemap_id')]
127+
);
128+
return $resultRedirect;
110129
}
111130

112131
/**
@@ -118,17 +137,19 @@ public function execute()
118137
{
119138
// check if data sent
120139
$data = $this->getRequest()->getPostValue();
140+
/** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
141+
$resultRedirect = $this->resultFactory->create(Controller\ResultFactory::TYPE_REDIRECT);
121142
if ($data) {
122-
if (!$this->validatePathToGenerate($data)) {
123-
/** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
124-
$resultRedirect = $this->resultFactory->create(Controller\ResultFactory::TYPE_REDIRECT);
125-
return $resultRedirect->setPath(
143+
if (!$this->validatePath($data)) {
144+
$resultRedirect->setPath(
126145
'adminhtml/*/edit',
127146
['sitemap_id' => $this->getRequest()->getParam('sitemap_id')]
128147
);
148+
return $resultRedirect;
129149
}
130-
$this->saveModel($data);
150+
return $this->getResult($this->saveData($data));
131151
}
132-
return $this->resultFactory->create(Controller\ResultFactory::TYPE_REDIRECT)->setPath('adminhtml/*/');
152+
$resultRedirect->setPath('adminhtml/*/');
153+
return $resultRedirect;
133154
}
134155
}

app/code/Magento/Sitemap/Test/Unit/Controller/Adminhtml/Sitemap/SaveTest.php

Lines changed: 100 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -5,58 +5,102 @@
55
*/
66
namespace Magento\Sitemap\Test\Unit\Controller\Adminhtml\Sitemap;
77

8+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
9+
use Magento\Framework\Controller\ResultFactory;
10+
811
class SaveTest extends \PHPUnit_Framework_TestCase
912
{
13+
/**
14+
* @var \Magento\Sitemap\Controller\Adminhtml\Sitemap\Save
15+
*/
16+
protected $saveController;
17+
18+
/**
19+
* @var \Magento\Backend\App\Action\Context
20+
*/
21+
protected $context;
22+
23+
/**
24+
* @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
25+
*/
26+
protected $objectManagerHelper;
27+
1028
/**
1129
* @var \Magento\Framework\HTTP\PhpEnvironment\Request|\PHPUnit_Framework_MockObject_MockObject
1230
*/
13-
protected $request;
31+
protected $requestMock;
1432

1533
/**
1634
* @var \Magento\Framework\Controller\ResultFactory|\PHPUnit_Framework_MockObject_MockObject
1735
*/
18-
protected $resultFactory;
36+
protected $resultFactoryMock;
1937

2038
/**
2139
* @var \Magento\Backend\Model\View\Result\Redirect|\PHPUnit_Framework_MockObject_MockObject
2240
*/
23-
protected $resultRedirect;
41+
protected $resultRedirectMock;
2442

2543
/**
26-
* @var \Magento\Sitemap\Controller\Adminhtml\Sitemap\Save|\PHPUnit_Framework_MockObject_MockObject
44+
* @var \Magento\Framework\ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject
2745
*/
28-
protected $controller;
46+
protected $objectManagerMock;
2947

3048
/**
31-
* @var \Magento\Backend\App\Action\Context|\PHPUnit_Framework_MockObject_MockObject
49+
* @var \Magento\Framework\Message\ManagerInterface|\PHPUnit_Framework_MockObject_MockObject
3250
*/
33-
protected $context;
51+
protected $messageManagerMock;
3452

3553
protected function setUp()
3654
{
37-
$this->request = $this->getMock('Magento\Framework\HTTP\PhpEnvironment\Request', [], [], '', false);
38-
$this->resultRedirect = $this->getMock('Magento\Backend\Model\View\Result\Redirect', [], [], '', false);
39-
40-
$this->resultFactory = $this->getMock('Magento\Framework\Controller\ResultFactory', [], [], '', false);
41-
$this->resultFactory->expects($this->once())
55+
$this->requestMock = $this->getMockBuilder('Magento\Framework\App\RequestInterface')
56+
->disableOriginalConstructor()
57+
->setMethods(['getPostValue'])
58+
->getMockForAbstractClass();
59+
$this->resultRedirectMock = $this->getMockBuilder('Magento\Backend\Model\View\Result\Redirect')
60+
->disableOriginalConstructor()
61+
->getMock();
62+
$this->resultFactoryMock = $this->getMockBuilder('Magento\Framework\Controller\ResultFactory')
63+
->disableOriginalConstructor()
64+
->getMock();
65+
$this->objectManagerMock = $this->getMockBuilder('Magento\Framework\ObjectManagerInterface')
66+
->getMock();
67+
$this->messageManagerMock = $this->getMockBuilder('Magento\Framework\Message\ManagerInterface')
68+
->getMock();
69+
70+
$this->resultFactoryMock->expects($this->once())
4271
->method('create')
43-
->with(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT)
44-
->willReturn($this->resultRedirect);
45-
46-
$this->context = $this->getMock('Magento\Backend\App\Action\Context', [], [], '', false);
47-
$this->context->expects($this->once())->method('getResultFactory')->willReturn($this->resultFactory);
48-
$this->context->expects($this->once())->method('getRequest')->willReturn($this->request);
72+
->with(ResultFactory::TYPE_REDIRECT)
73+
->willReturn($this->resultRedirectMock);
74+
75+
$this->objectManagerHelper = new ObjectManagerHelper($this);
76+
$this->context = $this->objectManagerHelper->getObject(
77+
'Magento\Backend\App\Action\Context',
78+
[
79+
'resultFactory' => $this->resultFactoryMock,
80+
'request' => $this->requestMock,
81+
'messageManager' => $this->messageManagerMock,
82+
'objectManager' => $this->objectManagerMock
83+
]
84+
);
85+
$this->saveController = $this->objectManagerHelper->getObject(
86+
'Magento\Sitemap\Controller\Adminhtml\Sitemap\Save',
87+
[
88+
'context' => $this->context
89+
]
90+
);
4991
}
5092

5193
public function testSaveEmptyDataShouldRedirectToDefault()
5294
{
53-
$this->request->expects($this->once())->method('getPostValue')->willReturn([]);
54-
$this->resultRedirect->expects($this->once())->method('setPath')->with('adminhtml/*/')->willReturnSelf();
55-
56-
$this->controller = (new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this))
57-
->getObject('Magento\Sitemap\Controller\Adminhtml\Sitemap\Save', ['context' => $this->context]);
95+
$this->requestMock->expects($this->once())
96+
->method('getPostValue')
97+
->willReturn([]);
98+
$this->resultRedirectMock->expects($this->once())
99+
->method('setPath')
100+
->with('adminhtml/*/')
101+
->willReturnSelf();
58102

59-
$this->assertSame($this->resultRedirect, $this->controller->execute());
103+
$this->assertSame($this->resultRedirectMock, $this->saveController->execute());
60104
}
61105

62106
public function testTryToSaveInvalidDataShouldFailWithErrors()
@@ -69,47 +113,59 @@ public function testTryToSaveInvalidDataShouldFailWithErrors()
69113
$data = ['sitemap_filename' => 'sitemap_filename', 'sitemap_path' => '/sitemap_path'];
70114
$siteMapId = 1;
71115

72-
$this->request->expects($this->once())->method('getPostValue')->willReturn($data);
73-
$this->request->expects($this->once())->method('getParam')->with('sitemap_id')->willReturn($siteMapId);
116+
$this->requestMock->expects($this->once())
117+
->method('getPostValue')
118+
->willReturn($data);
119+
$this->requestMock->expects($this->once())
120+
->method('getParam')
121+
->with('sitemap_id')
122+
->willReturn($siteMapId);
74123

75124
$validator = $this->getMock($validatorClass, [], [], '', false);
76-
$validator->expects($this->once())->method('setPaths')->with($validPaths);
125+
$validator->expects($this->once())
126+
->method('setPaths')
127+
->with($validPaths)
128+
->willReturnSelf();
77129
$validator->expects($this->once())
78130
->method('isValid')
79131
->with('/sitemap_path/sitemap_filename')
80132
->willReturn(false);
81-
$validator->expects($this->once())->method('getMessages')->willReturn($messages);
133+
$validator->expects($this->once())
134+
->method('getMessages')
135+
->willReturn($messages);
82136

83137
$helper = $this->getMock($helperClass, [], [], '', false);
84-
$helper->expects($this->once())->method('getValidPaths')->willReturn($validPaths);
138+
$helper->expects($this->once())
139+
->method('getValidPaths')
140+
->willReturn($validPaths);
85141

86142
$session = $this->getMock($sessionClass, ['setFormData'], [], '', false);
87-
$session->expects($this->once())->method('setFormData')->with($data);
143+
$session->expects($this->once())
144+
->method('setFormData')
145+
->with($data)
146+
->willReturnSelf();
88147

89-
$objectManager = $this->getMock('Magento\Framework\ObjectManagerInterface', [], [], '', false);
90-
$objectManager->expects($this->once())
148+
$this->objectManagerMock->expects($this->once())
91149
->method('create')
92150
->with($validatorClass)
93151
->willReturn($validator);
94-
$objectManager->expects($this->any())
152+
$this->objectManagerMock->expects($this->any())
95153
->method('get')
96154
->willReturnMap([[$helperClass, $helper], [$sessionClass, $session]]);
97155

98-
$messageManager = $this->getMock('Magento\Framework\Message\ManagerInterface', [], [], '', false);
99-
$messageManager->expects($this->at(0))->method('addError')->with($messages[0]);
100-
$messageManager->expects($this->at(1))->method('addError')->with($messages[1]);
156+
$this->messageManagerMock->expects($this->at(0))
157+
->method('addError')
158+
->withConsecutive(
159+
[$messages[0]],
160+
[$messages[1]]
161+
)
162+
->willReturnSelf();
101163

102-
$this->resultRedirect->expects($this->once())
164+
$this->resultRedirectMock->expects($this->once())
103165
->method('setPath')
104166
->with('adminhtml/*/edit', ['sitemap_id' => $siteMapId])
105167
->willReturnSelf();
106168

107-
$this->context->expects($this->once())->method('getObjectManager')->willReturn($objectManager);
108-
$this->context->expects($this->once())->method('getMessageManager')->willReturn($messageManager);
109-
110-
$this->controller = (new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this))
111-
->getObject('Magento\Sitemap\Controller\Adminhtml\Sitemap\Save', ['context' => $this->context]);
112-
113-
$this->assertSame($this->resultRedirect, $this->controller->execute());
169+
$this->assertSame($this->resultRedirectMock, $this->saveController->execute());
114170
}
115171
}

app/code/Magento/Widget/Model/NamespaceResolver.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,7 @@ protected function prepareModuleNamespaces()
8686
*/
8787
protected function prepareName($name)
8888
{
89-
$explodeString = strpos(
90-
$name,
91-
'\\'
92-
) === false ? '_' : '\\';
89+
$explodeString = strpos($name, '\\') === false ? '_' : '\\';
9390
return explode($explodeString, strtolower($name));
9491
}
9592
}

app/code/Magento/Widget/Model/Widget.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ public function getPlaceholderImageUrls()
359359
}
360360

361361
/**
362-
* Remove attributes from widget array and emulates how \Magento\Framework\Simplexml\Element::asCanonicalArray works
362+
* Remove attributes from widget array and emulate work of \Magento\Framework\Simplexml\Element::asCanonicalArray
363363
*
364364
* @param array $inputArray
365365
* @return array

app/code/Magento/Widget/Test/Unit/Model/WidgetTest.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ public function setUp()
2323
->disableOriginalConstructor()
2424
->getMock();
2525
$objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
26-
$objectManagerHelper->getObject('Magento\Widget\Model\Widget', ['dataStorage' => $this->dataStorageMock]);
2726
$this->widget = $objectManagerHelper->getObject(
2827
'Magento\Widget\Model\Widget',
2928
['dataStorage' => $this->dataStorageMock]

0 commit comments

Comments
 (0)