123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sitemap\Test\Unit\Model;
- use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
- /**
- * Class ObserverTest
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class ObserverTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
- */
- private $objectManager;
- /**
- * @var \Magento\Sitemap\Model\Observer
- */
- private $observer;
- /**
- * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- private $scopeConfigMock;
- /**
- * @var \Magento\Sitemap\Model\ResourceModel\Sitemap\CollectionFactory|\PHPUnit_Framework_MockObject_MockObject
- */
- private $collectionFactoryMock;
- /**
- * @var \Magento\Framework\Mail\Template\TransportBuilder|\PHPUnit_Framework_MockObject_MockObject
- */
- private $transportBuilderMock;
- /**
- * @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- private $storeManagerMock;
- /**
- * @var \Magento\Framework\Translate\Inline\StateInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- private $inlineTranslationMock;
- /**
- * @var \Magento\Sitemap\Model\ResourceModel\Sitemap\Collection|\PHPUnit_Framework_MockObject_MockObject
- */
- private $sitemapCollectionMock;
- /**
- * @var \Magento\Sitemap\Model\Sitemap|\PHPUnit_Framework_MockObject_MockObject
- */
- private $sitemapMock;
- /**
- * @var \Magento\Framework\ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- private $objectManagerMock;
- protected function setUp()
- {
- $this->objectManagerMock = $this->getMockBuilder(\Magento\Framework\ObjectManagerInterface::class)
- ->getMock();
- $this->scopeConfigMock = $this->getMockBuilder(\Magento\Framework\App\Config\ScopeConfigInterface::class)
- ->getMock();
- $this->collectionFactoryMock = $this->getMockBuilder(
- \Magento\Sitemap\Model\ResourceModel\Sitemap\CollectionFactory::class
- )->disableOriginalConstructor()
- ->setMethods(['create'])
- ->getMock();
- $this->transportBuilderMock = $this->getMockBuilder(\Magento\Framework\Mail\Template\TransportBuilder::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->storeManagerMock = $this->getMockBuilder(\Magento\Store\Model\StoreManagerInterface::class)
- ->getMock();
- $this->inlineTranslationMock = $this->getMockBuilder(\Magento\Framework\Translate\Inline\StateInterface::class)
- ->getMock();
- $this->sitemapCollectionMock = $this->createPartialMock(
- \Magento\Sitemap\Model\ResourceModel\Sitemap\Collection::class,
- ['getIterator']
- );
- $this->sitemapMock = $this->createPartialMock(\Magento\Sitemap\Model\Sitemap::class, ['generateXml']);
- $this->objectManager = new ObjectManager($this);
- $this->observer = $this->objectManager->getObject(
- \Magento\Sitemap\Model\Observer::class,
- [
- 'scopeConfig' => $this->scopeConfigMock,
- 'collectionFactory' => $this->collectionFactoryMock,
- 'storeManager' => $this->storeManagerMock,
- 'transportBuilder' => $this->transportBuilderMock,
- 'inlineTranslation' => $this->inlineTranslationMock
- ]
- );
- }
- public function testScheduledGenerateSitemapsSendsExceptionEmail()
- {
- $exception = 'Sitemap Exception';
- $transport = $this->createMock(\Magento\Framework\Mail\TransportInterface::class);
- $this->scopeConfigMock->expects($this->once())->method('isSetFlag')->willReturn(true);
- $this->collectionFactoryMock->expects($this->once())
- ->method('create')
- ->willReturn($this->sitemapCollectionMock);
- $this->sitemapCollectionMock->expects($this->any())
- ->method('getIterator')
- ->willReturn(new \ArrayIterator([$this->sitemapMock]));
- $this->sitemapMock->expects($this->once())
- ->method('generateXml')
- ->willThrowException(new \Exception($exception));
- $this->scopeConfigMock->expects($this->at(1))
- ->method('getValue')
- ->with(
- \Magento\Sitemap\Model\Observer::XML_PATH_ERROR_RECIPIENT,
- \Magento\Store\Model\ScopeInterface::SCOPE_STORE
- )
- ->willReturn('error-recipient@example.com');
- $this->inlineTranslationMock->expects($this->once())
- ->method('suspend');
- $this->transportBuilderMock->expects($this->once())
- ->method('setTemplateIdentifier')
- ->will($this->returnSelf());
- $this->transportBuilderMock->expects($this->once())
- ->method('setTemplateOptions')
- ->with([
- 'area' => \Magento\Backend\App\Area\FrontNameResolver::AREA_CODE,
- 'store' => \Magento\Store\Model\Store::DEFAULT_STORE_ID,
- ])
- ->will($this->returnSelf());
- $this->transportBuilderMock->expects($this->once())
- ->method('setTemplateVars')
- ->with(['warnings' => $exception])
- ->will($this->returnSelf());
- $this->transportBuilderMock->expects($this->once())
- ->method('setFrom')
- ->will($this->returnSelf());
- $this->transportBuilderMock->expects($this->once())
- ->method('addTo')
- ->will($this->returnSelf());
- $this->transportBuilderMock->expects($this->once())
- ->method('getTransport')
- ->willReturn($transport);
- $transport->expects($this->once())
- ->method('sendMessage');
- $this->inlineTranslationMock->expects($this->once())
- ->method('resume');
- $this->observer->scheduledGenerateSitemaps();
- }
- }
|