Skip to content

Commit ced9ab5

Browse files
committed
Merge remote-tracking branch 'origin/imported-magento-magento2-32363' into 2.4-develop-pr134
2 parents 2dace84 + eaa81fc commit ced9ab5

File tree

2 files changed

+54
-44
lines changed
  • app/code/Magento/Cms

2 files changed

+54
-44
lines changed

app/code/Magento/Cms/Controller/Adminhtml/Page/Save.php

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,28 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\Cms\Controller\Adminhtml\Page;
79

8-
use Magento\Framework\App\Action\HttpPostActionInterface;
910
use Magento\Backend\App\Action;
11+
use Magento\Backend\Model\View\Result\Redirect;
12+
use Magento\Cms\Api\Data\PageInterface;
13+
use Magento\Cms\Api\PageRepositoryInterface;
1014
use Magento\Cms\Model\Page;
15+
use Magento\Cms\Model\PageFactory;
16+
use Magento\Framework\App\Action\HttpPostActionInterface;
1117
use Magento\Framework\App\ObjectManager;
1218
use Magento\Framework\App\Request\DataPersistorInterface;
19+
use Magento\Framework\Controller\ResultInterface;
1320
use Magento\Framework\Exception\LocalizedException;
1421

1522
/**
1623
* Save CMS page action.
1724
*
1825
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
1926
*/
20-
class Save extends \Magento\Backend\App\Action implements HttpPostActionInterface
27+
class Save extends Action implements HttpPostActionInterface
2128
{
2229
/**
2330
* Authorization level of a basic admin session
@@ -37,47 +44,46 @@ class Save extends \Magento\Backend\App\Action implements HttpPostActionInterfac
3744
protected $dataPersistor;
3845

3946
/**
40-
* @var \Magento\Cms\Model\PageFactory
47+
* @var PageFactory
4148
*/
4249
private $pageFactory;
4350

4451
/**
45-
* @var \Magento\Cms\Api\PageRepositoryInterface
52+
* @var PageRepositoryInterface
4653
*/
4754
private $pageRepository;
4855

4956
/**
5057
* @param Action\Context $context
5158
* @param PostDataProcessor $dataProcessor
5259
* @param DataPersistorInterface $dataPersistor
53-
* @param \Magento\Cms\Model\PageFactory|null $pageFactory
54-
* @param \Magento\Cms\Api\PageRepositoryInterface|null $pageRepository
60+
* @param PageFactory|null $pageFactory
61+
* @param PageRepositoryInterface|null $pageRepository
5562
*/
5663
public function __construct(
5764
Action\Context $context,
5865
PostDataProcessor $dataProcessor,
5966
DataPersistorInterface $dataPersistor,
60-
\Magento\Cms\Model\PageFactory $pageFactory = null,
61-
\Magento\Cms\Api\PageRepositoryInterface $pageRepository = null
67+
PageFactory $pageFactory = null,
68+
PageRepositoryInterface $pageRepository = null
6269
) {
6370
$this->dataProcessor = $dataProcessor;
6471
$this->dataPersistor = $dataPersistor;
65-
$this->pageFactory = $pageFactory ?: ObjectManager::getInstance()->get(\Magento\Cms\Model\PageFactory::class);
66-
$this->pageRepository = $pageRepository
67-
?: ObjectManager::getInstance()->get(\Magento\Cms\Api\PageRepositoryInterface::class);
72+
$this->pageFactory = $pageFactory ?: ObjectManager::getInstance()->get(PageFactory::class);
73+
$this->pageRepository = $pageRepository ?: ObjectManager::getInstance()->get(PageRepositoryInterface::class);
6874
parent::__construct($context);
6975
}
7076

7177
/**
7278
* Save action
7379
*
7480
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
75-
* @return \Magento\Framework\Controller\ResultInterface
81+
* @return ResultInterface
7682
*/
7783
public function execute()
7884
{
7985
$data = $this->getRequest()->getPostValue();
80-
/** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
86+
/** @var Redirect $resultRedirect */
8187
$resultRedirect = $this->resultRedirectFactory->create();
8288
if ($data) {
8389
$data = $this->dataProcessor->filter($data);
@@ -88,7 +94,7 @@ public function execute()
8894
$data['page_id'] = null;
8995
}
9096

91-
/** @var \Magento\Cms\Model\Page $model */
97+
/** @var Page $model */
9298
$model = $this->pageFactory->create();
9399

94100
$id = $this->getRequest()->getParam('page_id');
@@ -117,7 +123,7 @@ public function execute()
117123
} catch (LocalizedException $e) {
118124
$this->messageManager->addExceptionMessage($e->getPrevious() ?: $e);
119125
} catch (\Throwable $e) {
120-
$this->messageManager->addExceptionMessage($e, __('Something went wrong while saving the page.'));
126+
$this->messageManager->addErrorMessage(__('Something went wrong while saving the page.'));
121127
}
122128

123129
$this->dataPersistor->set('cms_page', $data);
@@ -129,10 +135,10 @@ public function execute()
129135
/**
130136
* Process result redirect
131137
*
132-
* @param \Magento\Cms\Api\Data\PageInterface $model
133-
* @param \Magento\Backend\Model\View\Result\Redirect $resultRedirect
138+
* @param PageInterface $model
139+
* @param Redirect $resultRedirect
134140
* @param array $data
135-
* @return \Magento\Backend\Model\View\Result\Redirect
141+
* @return Redirect
136142
* @throws LocalizedException
137143
*/
138144
private function processResultRedirect($model, $resultRedirect, $data)
@@ -149,7 +155,7 @@ private function processResultRedirect($model, $resultRedirect, $data)
149155
'*/*/edit',
150156
[
151157
'page_id' => $newPage->getId(),
152-
'_current' => true
158+
'_current' => true,
153159
]
154160
);
155161
}

app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/SaveTest.php

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Copyright © Magento, Inc. All rights reserved.
45
* See COPYING.txt for license details.
@@ -7,6 +8,7 @@
78

89
namespace Magento\Cms\Test\Unit\Controller\Adminhtml\Page;
910

11+
use Magento\Backend\App\Action\Context;
1012
use Magento\Backend\Model\View\Result\Redirect;
1113
use Magento\Backend\Model\View\Result\RedirectFactory;
1214
use Magento\Cms\Api\PageRepositoryInterface;
@@ -18,7 +20,6 @@
1820
use Magento\Framework\App\RequestInterface;
1921
use Magento\Framework\Exception\NoSuchEntityException;
2022
use Magento\Framework\Message\ManagerInterface;
21-
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
2223
use PHPUnit\Framework\MockObject\MockObject;
2324
use PHPUnit\Framework\TestCase;
2425

@@ -82,13 +83,14 @@ class SaveTest extends TestCase
8283
*/
8384
private $pageId = 1;
8485

86+
/**
87+
* @inheirtDoc
88+
*/
8589
protected function setUp(): void
8690
{
87-
$objectManager = new ObjectManager($this);
88-
8991
$this->resultRedirectFactory = $this->getMockBuilder(RedirectFactory::class)
9092
->disableOriginalConstructor()
91-
->setMethods(['create'])
93+
->onlyMethods(['create'])
9294
->getMock();
9395
$this->resultRedirect = $this->getMockBuilder(Redirect::class)
9496
->disableOriginalConstructor()
@@ -98,7 +100,7 @@ protected function setUp(): void
98100
->willReturn($this->resultRedirect);
99101
$this->dataProcessorMock = $this->getMockBuilder(
100102
PostDataProcessor::class
101-
)->setMethods(['filter'])->disableOriginalConstructor()
103+
)->onlyMethods(['filter'])->disableOriginalConstructor()
102104
->getMock();
103105
$this->dataPersistorMock = $this->getMockBuilder(DataPersistorInterface::class)
104106
->getMock();
@@ -108,27 +110,28 @@ protected function setUp(): void
108110
$this->messageManagerMock = $this->getMockBuilder(ManagerInterface::class)
109111
->getMockForAbstractClass();
110112
$this->eventManagerMock = $this->getMockBuilder(\Magento\Framework\Event\ManagerInterface::class)
111-
->setMethods(['dispatch'])
113+
->onlyMethods(['dispatch'])
112114
->getMockForAbstractClass();
113115
$this->pageFactory = $this->getMockBuilder(PageFactory::class)
114116
->disableOriginalConstructor()
115-
->setMethods(['create'])
117+
->onlyMethods(['create'])
116118
->getMock();
117119
$this->pageRepository = $this->getMockBuilder(PageRepositoryInterface::class)
118120
->disableOriginalConstructor()
119121
->getMockForAbstractClass();
120-
$this->saveController = $objectManager->getObject(
121-
Save::class,
122-
[
123-
'request' => $this->requestMock,
124-
'messageManager' => $this->messageManagerMock,
125-
'eventManager' => $this->eventManagerMock,
126-
'resultRedirectFactory' => $this->resultRedirectFactory,
127-
'dataProcessor' => $this->dataProcessorMock,
128-
'dataPersistor' => $this->dataPersistorMock,
129-
'pageFactory' => $this->pageFactory,
130-
'pageRepository' => $this->pageRepository
131-
]
122+
$context = $this->getMockBuilder(Context::class)
123+
->disableOriginalConstructor()
124+
->getMock();
125+
$context->method('getRequest')->willReturn($this->requestMock);
126+
$context->method('getMessageManager')->willReturn($this->messageManagerMock);
127+
$context->method('getEventManager')->willReturn($this->eventManagerMock);
128+
$context->method('getResultRedirectFactory')->willReturn($this->resultRedirectFactory);
129+
$this->saveController = new Save(
130+
$context,
131+
$this->dataProcessorMock,
132+
$this->dataPersistorMock,
133+
$this->pageFactory,
134+
$this->pageRepository
132135
);
133136
}
134137

@@ -140,7 +143,7 @@ public function testSaveAction()
140143
'stores' => ['0'],
141144
'is_active' => true,
142145
'content' => '"><script>alert("cookie: "+document.cookie)</script>',
143-
'back' => 'close'
146+
'back' => 'close',
144147
];
145148

146149
$filteredPostData = [
@@ -149,7 +152,7 @@ public function testSaveAction()
149152
'stores' => ['0'],
150153
'is_active' => true,
151154
'content' => '&quot;&gt;&lt;script&gt;alert(&quot;cookie: &quot;+document.cookie)&lt;/script&gt;',
152-
'back' => 'close'
155+
'back' => 'close',
153156
];
154157

155158
$this->dataProcessorMock->expects($this->any())
@@ -236,7 +239,7 @@ public function testSaveAndContinue()
236239
'stores' => ['0'],
237240
'is_active' => true,
238241
'content' => '"><script>alert("cookie: "+document.cookie)</script>',
239-
'back' => 'continue'
242+
'back' => 'continue',
240243
];
241244
$this->requestMock->expects($this->any())->method('getPostValue')->willReturn($postData);
242245
$this->requestMock->expects($this->atLeastOnce())
@@ -304,12 +307,13 @@ public function testSaveActionThrowsException()
304307
$this->pageRepository->expects($this->once())->method('getById')->with($this->pageId)->willReturn($page);
305308
$page->expects($this->once())->method('setData');
306309
$this->pageRepository->expects($this->once())->method('save')->with($page)
307-
->willThrowException(new \Exception('Error message.'));
310+
->willThrowException(new \Error('Error message.'));
308311

309312
$this->messageManagerMock->expects($this->never())
310313
->method('addSuccessMessage');
311314
$this->messageManagerMock->expects($this->once())
312-
->method('addExceptionMessage');
315+
->method('addErrorMessage')
316+
->with('Something went wrong while saving the page.');
313317

314318
$this->dataPersistorMock->expects($this->any())
315319
->method('set')
@@ -318,7 +322,7 @@ public function testSaveActionThrowsException()
318322
[
319323
'page_id' => $this->pageId,
320324
'layout_update_xml' => null,
321-
'custom_layout_update_xml' => null
325+
'custom_layout_update_xml' => null,
322326
]
323327
);
324328

0 commit comments

Comments
 (0)