Skip to content
Snippets Groups Projects
Commit f826a379 authored by Michail Slabko's avatar Michail Slabko
Browse files

MAGETWO-31723: Delete category message is absent after category has been...

MAGETWO-31723: Delete category message is absent after category has been deleted and a page has been loaded
parent 8f6bb184
No related merge requests found
...@@ -7,6 +7,23 @@ namespace Magento\Catalog\Controller\Adminhtml\Category; ...@@ -7,6 +7,23 @@ namespace Magento\Catalog\Controller\Adminhtml\Category;
class Delete extends \Magento\Catalog\Controller\Adminhtml\Category class Delete extends \Magento\Catalog\Controller\Adminhtml\Category
{ {
/** @var \Magento\Catalog\Api\CategoryRepositoryInterface */
protected $categoryRepository;
/**
* @param \Magento\Backend\App\Action\Context $context
* @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
* @param \Magento\Catalog\Api\CategoryRepositoryInterface $categoryRepository
*/
public function __construct(
\Magento\Backend\App\Action\Context $context,
\Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
\Magento\Catalog\Api\CategoryRepositoryInterface $categoryRepository
) {
parent::__construct($context, $resultRedirectFactory);
$this->categoryRepository = $categoryRepository;
}
/** /**
* Delete category action * Delete category action
* *
...@@ -21,11 +38,11 @@ class Delete extends \Magento\Catalog\Controller\Adminhtml\Category ...@@ -21,11 +38,11 @@ class Delete extends \Magento\Catalog\Controller\Adminhtml\Category
$parentId = null; $parentId = null;
if ($categoryId) { if ($categoryId) {
try { try {
$category = $this->_objectManager->create('Magento\Catalog\Model\Category')->load($categoryId); $category = $this->categoryRepository->get($categoryId);
$parentId = $category->getParentId(); $parentId = $category->getParentId();
$this->_eventManager->dispatch('catalog_controller_category_delete', ['category' => $category]); $this->_eventManager->dispatch('catalog_controller_category_delete', ['category' => $category]);
$this->_objectManager->get('Magento\Backend\Model\Auth\Session')->setDeletedPath($category->getPath()); $this->_auth->getAuthStorage()->setDeletedPath($category->getPath());
$category->delete(); $this->categoryRepository->delete($category);
$this->messageManager->addSuccess(__('You deleted the category.')); $this->messageManager->addSuccess(__('You deleted the category.'));
} catch (\Magento\Framework\Model\Exception $e) { } catch (\Magento\Framework\Model\Exception $e) {
$this->messageManager->addError($e->getMessage()); $this->messageManager->addError($e->getMessage());
......
<?php
/**
* @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
*/
namespace Magento\Catalog\Controller\Adminhtml\Category;
use Magento\Framework\Message\MessageInterface;
class DeleteTest extends \Magento\Backend\Utility\Controller
{
/**
* @magentoDataFixture Magento/Catalog/_files/categories.php
*/
public function testDeleteById()
{
$categoryId = 4;
$parentId = 3;
$this->getRequest()->setParam('id', $categoryId);
$this->dispatch('backend/catalog/category/delete/');
$this->assertNull($this->getCategoryById($categoryId));
$this->assertSessionMessages(
$this->equalTo(['You deleted the category.']),
MessageInterface::TYPE_SUCCESS
);
$this->assertRedirect($this->stringContains('catalog/category/index/id/' . $parentId));
}
/**
* Retrieve attribute set based on given name.
*
* @param int $categoryId
* @return \Magento\Catalog\Model\Category|null
*/
protected function getCategoryById($categoryId)
{
$category = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
'Magento\Catalog\Model\Category'
)->load($categoryId);
return $category->getId() === null ? null : $category;
}
}
<?php
/**
* @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
*/
namespace Magento\Catalog\Controller\Adminhtml\Category;
use Magento\TestFramework\Helper\ObjectManager as ObjectManagerHelper;
class DeleteTest extends \PHPUnit_Framework_TestCase
{
/** @var \Magento\Catalog\Controller\Adminhtml\Category\Delete */
protected $unit;
/** @var \Magento\Backend\Model\View\Result\Redirect|\PHPUnit_Framework_MockObject_MockObject */
protected $resultRedirect;
/** @var \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject */
protected $request;
/** @var \Magento\Catalog\Api\CategoryRepositoryInterface|\PHPUnit_Framework_MockObject_MockObject */
protected $categoryRepository;
/** @var \Magento\Backend\Model\Auth\StorageInterface|\PHPUnit_Framework_MockObject_MockObject */
protected $authStorage;
protected function setUp()
{
$context = $this->getMock('Magento\Backend\App\Action\Context', [], [], '', false);
$resultRedirectFactory = $this->getMock(
'Magento\Backend\Model\View\Result\RedirectFactory',
['create'],
[],
'',
false
);
$this->request = $this->getMockForAbstractClass(
'Magento\Framework\App\RequestInterface',
[],
'',
false,
true,
true,
['getParam', 'getPost']
);
$auth = $this->getMock(
'Magento\Backend\Model\Auth',
['getAuthStorage'],
[],
'',
false
);
$this->authStorage = $this->getMock(
'Magento\Backend\Model\Auth\StorageInterface'
,
['processLogin', 'processLogout', 'isLoggedIn', 'prolong', 'setDeletedPath'],
[],
'',
false
);
$eventManager = $this->getMockForAbstractClass(
'Magento\Framework\Event\ManagerInterface',
[],
'',
false,
true,
true,
['dispatch']
);
$response = $this->getMockForAbstractClass(
'Magento\Framework\App\ResponseInterface',
[],
'',
false
);
$messageManager = $this->getMockForAbstractClass(
'Magento\Framework\Message\ManagerInterface',
[],
'',
false,
true,
true,
['addSuccess']
);
$this->categoryRepository = $this->getMock('Magento\Catalog\Api\CategoryRepositoryInterface');
$context->expects($this->any())
->method('getRequest')
->will($this->returnValue($this->request));
$context->expects($this->any())
->method('getResponse')
->will($this->returnValue($response));
$context->expects($this->any())
->method('getMessageManager')
->will($this->returnValue($messageManager));
$context->expects($this->any())
->method('getEventManager')
->will($this->returnValue($eventManager));
$context->expects($this->any())
->method('getAuth')
->will($this->returnValue($auth));
$auth->expects($this->any())
->method('getAuthStorage')
->will($this->returnValue($this->authStorage));
$this->resultRedirect = $this->getMock('Magento\Backend\Model\View\Result\Redirect', [], [], '', false);
$resultRedirectFactory->expects($this->any())->method('create')->willReturn($this->resultRedirect);
$this->unit = (new ObjectManagerHelper($this))->getObject(
'Magento\Catalog\Controller\Adminhtml\Category\Delete',
[
'context' => $context,
'resultRedirectFactory' => $resultRedirectFactory,
'categoryRepository' => $this->categoryRepository
]
);
}
public function testDeleteWithoutCategoryId()
{
$this->request->expects($this->any())->method('getParam')->with('id')->willReturn(null);
$this->resultRedirect->expects($this->once())->method('setPath')
->with('catalog/*/', ['_current' => true, 'id' => null]);
$this->categoryRepository->expects($this->never())->method('get');
$this->unit->execute();
}
public function testDelete()
{
$categoryId = 5;
$parentId = 7;
$this->request->expects($this->any())->method('getParam')->with('id')->willReturn($categoryId);
$category = $this->getMock('Magento\Catalog\Model\Category', ['getParentId', 'getPath'], [], '', false);
$category->expects($this->once())->method('getParentId')->willReturn($parentId);
$category->expects($this->once())->method('getPath')->willReturn('category-path');
$this->categoryRepository->expects($this->once())->method('get')->with($categoryId)->willReturn($category);
$this->authStorage->expects($this->once())->method('setDeletedPath')->with('category-path');
$this->resultRedirect->expects($this->once())->method('setPath')
->with('catalog/*/', ['_current' => true, 'id' => $parentId]);
$this->unit->execute();
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment