IndexTest.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Rss\Test\Unit\Controller\Feed;
  7. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
  8. use Zend\Feed\Writer\Exception\InvalidArgumentException;
  9. /**
  10. * Class IndexTest
  11. * @package Magento\Rss\Controller\Feed
  12. */
  13. class IndexTest extends \PHPUnit\Framework\TestCase
  14. {
  15. /**
  16. * @var \Magento\Rss\Controller\Feed\Index
  17. */
  18. protected $controller;
  19. /**
  20. * @var \Magento\Rss\Model\RssManager|\PHPUnit_Framework_MockObject_MockObject
  21. */
  22. protected $rssManager;
  23. /**
  24. * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
  25. */
  26. protected $scopeConfigInterface;
  27. /**
  28. * @var \PHPUnit_Framework_MockObject_MockObject
  29. */
  30. protected $rssFactory;
  31. /**
  32. * @var \PHPUnit_Framework_MockObject_MockObject
  33. */
  34. protected $response;
  35. protected function setUp()
  36. {
  37. $this->rssManager = $this->createPartialMock(\Magento\Rss\Model\RssManager::class, ['getProvider']);
  38. $this->scopeConfigInterface = $this->createMock(\Magento\Framework\App\Config\ScopeConfigInterface::class);
  39. $this->rssFactory = $this->createPartialMock(\Magento\Rss\Model\RssFactory::class, ['create']);
  40. $request = $this->createMock(\Magento\Framework\App\RequestInterface::class);
  41. $request->expects($this->once())->method('getParam')->with('type')->will($this->returnValue('rss_feed'));
  42. $this->response = $this->getMockBuilder(\Magento\Framework\App\ResponseInterface::class)
  43. ->setMethods(['setHeader', 'setBody', 'sendResponse'])
  44. ->disableOriginalConstructor()->getMock();
  45. $objectManagerHelper = new ObjectManagerHelper($this);
  46. $this->controller = $objectManagerHelper->getObject(
  47. \Magento\Rss\Controller\Feed\Index::class,
  48. [
  49. 'rssManager' => $this->rssManager,
  50. 'scopeConfig' => $this->scopeConfigInterface,
  51. 'rssFactory' => $this->rssFactory,
  52. 'request' => $request,
  53. 'response' => $this->response
  54. ]
  55. );
  56. }
  57. public function testExecute()
  58. {
  59. $this->scopeConfigInterface->expects($this->once())->method('getValue')->will($this->returnValue(true));
  60. $dataProvider = $this->createMock(\Magento\Framework\App\Rss\DataProviderInterface::class);
  61. $dataProvider->expects($this->once())->method('isAllowed')->will($this->returnValue(true));
  62. $dataProvider->expects($this->once())->method('isAuthRequired')->will($this->returnValue(false));
  63. $rssModel = $this->createPartialMock(\Magento\Rss\Model\Rss::class, ['setDataProvider', 'createRssXml']);
  64. $rssModel->expects($this->once())->method('setDataProvider')->will($this->returnSelf());
  65. $rssModel->expects($this->once())->method('createRssXml')->will($this->returnValue(''));
  66. $this->response->expects($this->once())->method('setHeader')->will($this->returnSelf());
  67. $this->response->expects($this->once())->method('setBody')->will($this->returnSelf());
  68. $this->rssFactory->expects($this->once())->method('create')->will($this->returnValue($rssModel));
  69. $this->rssManager->expects($this->once())->method('getProvider')->will($this->returnValue($dataProvider));
  70. $this->controller->execute();
  71. }
  72. public function testExecuteWithException()
  73. {
  74. $this->scopeConfigInterface->expects($this->once())->method('getValue')->will($this->returnValue(true));
  75. $dataProvider = $this->createMock(\Magento\Framework\App\Rss\DataProviderInterface::class);
  76. $dataProvider->expects($this->once())->method('isAllowed')->will($this->returnValue(true));
  77. $rssModel = $this->createPartialMock(\Magento\Rss\Model\Rss::class, ['setDataProvider', 'createRssXml']);
  78. $rssModel->expects($this->once())->method('setDataProvider')->will($this->returnSelf());
  79. $exceptionMock = new \Magento\Framework\Exception\RuntimeException(
  80. new \Magento\Framework\Phrase('Any message')
  81. );
  82. $rssModel->expects($this->once())->method('createRssXml')->will(
  83. $this->throwException($exceptionMock)
  84. );
  85. $this->response->expects($this->once())->method('setHeader')->will($this->returnSelf());
  86. $this->rssFactory->expects($this->once())->method('create')->will($this->returnValue($rssModel));
  87. $this->rssManager->expects($this->once())->method('getProvider')->will($this->returnValue($dataProvider));
  88. $this->expectException(\Magento\Framework\Exception\RuntimeException::class);
  89. $this->controller->execute();
  90. }
  91. }