Viewing File: /home/maglabs/it/app/code/Magento/UrlRewrite/Test/Unit/Controller/Url/Rewrite/InlineEditTest.php
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\UrlRewrite\Test\Unit\Controller\Url\Rewrite;
use Magento\Backend\App\Action\Context;
use Magento\Framework\App\RequestInterface;
use Magento\Framework\Controller\Result\Json;
use Magento\Framework\Controller\Result\JsonFactory;
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
use Magento\UrlRewrite\Controller\Adminhtml\Url\Rewrite\InlineEdit;
use Magento\UrlRewrite\Model\ResourceModel\UrlRewrite as UrlRewriteResource;
use Magento\UrlRewrite\Model\ResourceModel\UrlRewriteFactory as UrlRewriteResourceFactory;
use Magento\UrlRewrite\Model\UrlRewrite;
use Magento\UrlRewrite\Model\UrlRewriteFactory;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
/**
* Url rewrite inline edit action unit test class
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class InlineEditTest extends TestCase
{
/**
* @var ObjectManager
*/
private $objectManager;
/**
* @var RequestInterface|MockObject
*/
private $request;
/**
* @var Context|MockObject
*/
private $contextMock;
/**
* @var JsonFactory|MockObject
*/
private $jsonFactory;
/**
* @var Json|MockObject
*/
private $resultJson;
/**
* @var UrlRewrite|MockObject
*/
private $urlRewrite;
/**
* @var UrlRewriteFactory|MockObject
*/
private $urlRewriteFactory;
/**
* @var UrlRewriteResource|MockObject
*/
private $urlRewriteResource;
/**
* @var urlRewriteResourceFactory|MockObject
*/
private $urlRewriteResourceFactory;
/**
* @var InlineEdit|MockObject
*/
private $inlineEditController;
/**
* SetUp method
*/
protected function setUp(): void
{
$this->objectManager = new ObjectManager($this);
$this->request = $this->getMockForAbstractClass(
RequestInterface::class,
[],
'',
false
);
$this->contextMock = $this->objectManager->getObject(
Context::class,
[
'request' => $this->request
]
);
$this->resultJson = $this->createMock(Json::class);
$this->jsonFactory = $this->createPartialMock(
JsonFactory::class,
['create']
);
$this->urlRewrite = $this->createPartialMock(
UrlRewrite::class,
['addData', 'getId']
);
$this->urlRewriteFactory = $this->createPartialMock(
UrlRewriteFactory::class,
['create']
);
$this->urlRewriteResource = $this->createPartialMock(
UrlRewriteResource::class,
['load', 'save']
);
$this->urlRewriteResourceFactory = $this->createPartialMock(
urlRewriteResourceFactory::class,
['create']
);
$this->inlineEditController = $this->objectManager->getObject(
InlineEdit::class,
[
'context' => $this->contextMock,
'urlRewriteFactory' => $this->urlRewriteFactory,
'urlRewriteResourceFactory' => $this->urlRewriteResourceFactory,
'jsonFactory' => $this->jsonFactory
]
);
}
/**
* Prepare mocks for tests
*
* @return void
*/
private function prepareMocksWithParamsForTestExecute(): void
{
$postData = [
1 => [
'request_path' => 'category-1.html',
'redirect_type' => 0,
'url_rewrite_id' => 1
]
];
$this->request->expects($this->any())
->method('getParam')
->willReturnMap(
[
['isAjax', null, true],
['items', [], $postData]
]
);
$this->jsonFactory->expects($this->once())
->method('create')
->willReturn($this->resultJson);
$this->urlRewriteResourceFactory->expects($this->once())
->method('create')
->willReturn($this->urlRewriteResource);
$this->urlRewriteResource->expects($this->once())
->method('load')
->with($this->urlRewrite, 1)
->willReturn($this->urlRewrite);
$this->urlRewriteFactory->expects($this->once())
->method('create')
->willReturn($this->urlRewrite);
$this->urlRewrite->expects($this->once())
->method('addData')
->with(array_shift($postData))
->willReturnSelf();
}
/**
* Execute test with runtime exception
*
* @return void
*/
public function testExecuteWithRuntimeException(): void
{
$this->prepareMocksWithParamsForTestExecute();
$this->urlRewrite->expects($this->once())
->method('getId')
->willReturn(1);
$this->urlRewriteResource->expects($this->once())
->method('save')
->with($this->urlRewrite)
->willThrowException(new \RuntimeException('RuntimeException'));
$this->resultJson->expects($this->once())
->method('setData')
->with(
[
'messages' => [
'[Url rewrite ID: 1] RuntimeException'
],
'error' => true
]
)
->willReturnSelf();
$this->assertSame($this->resultJson, $this->inlineEditController->execute());
}
/**
* Execute test with exception
*
* @return void
*/
public function testExecuteWithException(): void
{
$this->prepareMocksWithParamsForTestExecute();
$this->urlRewrite->expects($this->once())
->method('getId')
->willReturn(1);
$this->urlRewriteResource->expects($this->once())
->method('save')
->with($this->urlRewrite)
->willThrowException(new \Exception('Exception'));
$this->resultJson->expects($this->once())
->method('setData')
->with(
[
'messages' => [
'[Url rewrite ID: 1] Something went wrong while saving the url rewrite.'
],
'error' => true
]
)
->willReturnSelf();
$this->assertSame($this->resultJson, $this->inlineEditController->execute());
}
/**
* Execute test without post data
*
* @return void
*/
public function testExecuteWithoutData(): void
{
$this->jsonFactory->expects($this->once())
->method('create')
->willReturn($this->resultJson);
$this->request->expects($this->any())
->method('getParam')
->willReturnMap(
[
['isAjax', null, true],
['items', [], []]
]
);
$this->resultJson->expects($this->once())
->method('setData')
->with(
[
'messages' => [
__('Please correct the data sent.')
],
'error' => true
]
)
->willReturnSelf();
$this->assertSame($this->resultJson, $this->inlineEditController->execute());
}
/**
* Execute test without exceptions
*
* @return void
*/
public function testExecuteAction(): void
{
$this->prepareMocksWithParamsForTestExecute();
$this->urlRewriteResource->expects($this->once())
->method('save')
->with($this->urlRewrite)
->willReturnSelf();
$this->resultJson->expects($this->once())
->method('setData')
->with(
[
'messages' => [],
'error' => false
]
)
->willReturnSelf();
$this->assertSame(
$this->resultJson,
$this->inlineEditController->execute()
);
}
}
Back to Directory
File Manager