![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/dev/tests/integration/testsuite/Magento/Newsletter/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Newsletter\Model; use Magento\Store\Model\ScopeInterface; class QueueTest extends \PHPUnit\Framework\TestCase { /** * @magentoDataFixture Magento/Newsletter/_files/queue.php * @magentoAppIsolation enabled */ public function testSendPerSubscriber() { /** @var $objectManager \Magento\TestFramework\ObjectManager */ $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); /** @var \Magento\Framework\App\Config\MutableScopeConfigInterface $mutableConfig */ $mutableConfig = $objectManager->get(\Magento\Framework\App\Config\MutableScopeConfigInterface::class); $mutableConfig->setValue('general/locale/code', 'de_DE', ScopeInterface::SCOPE_STORE, 'fixturestore'); $objectManager->get( \Magento\Framework\App\State::class )->setAreaCode(\Magento\Framework\App\Area::AREA_FRONTEND); $area = $objectManager->get(\Magento\Framework\App\AreaList::class) ->getArea(\Magento\Framework\App\Area::AREA_FRONTEND); $area->load(); /** @var $filter \Magento\Newsletter\Model\Template\Filter */ $filter = $objectManager->get(\Magento\Newsletter\Model\Template\Filter::class); $transport = $this->getMockBuilder(\Magento\Framework\Mail\TransportInterface::class) ->setMethods(['sendMessage']) ->getMockForAbstractClass(); $transport->expects($this->exactly(2))->method('sendMessage')->willReturnSelf(); $builder = $this->createPartialMock( \Magento\Newsletter\Model\Queue\TransportBuilder::class, ['getTransport', 'setFrom', 'addTo'] ); $builder->expects($this->exactly(2))->method('getTransport')->willReturn($transport); $builder->expects($this->exactly(2))->method('setFrom')->willReturnSelf(); $builder->expects($this->exactly(2))->method('addTo')->willReturnSelf(); /** @var $queue \Magento\Newsletter\Model\Queue */ $queue = $objectManager->create( \Magento\Newsletter\Model\Queue::class, ['filter' => $filter, 'transportBuilder' => $builder] ); $queue->load('Subject', 'newsletter_subject'); // fixture $queue->sendPerSubscriber(); } /** * @magentoDataFixture Magento/Newsletter/_files/queue.php * @magentoAppIsolation enabled */ public function testSendPerSubscriberProblem() { // md5 used here only for random string generation for test purposes. No cryptographic use. // phpcs:ignore Magento2.Security.InsecureFunction $errorMsg = md5(microtime()); \Magento\TestFramework\Helper\Bootstrap::getInstance() ->loadArea(\Magento\Framework\App\Area::AREA_FRONTEND); $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); $transport = $this->getMockBuilder(\Magento\Framework\Mail\TransportInterface::class) ->setMethods(['sendMessage']) ->getMockForAbstractClass(); $transport->expects($this->any()) ->method('sendMessage') ->willThrowException(new \Magento\Framework\Exception\MailException(__($errorMsg))); $builder = $this->createPartialMock( \Magento\Newsletter\Model\Queue\TransportBuilder::class, ['getTransport', 'setFrom', 'addTo', 'setTemplateOptions', 'setTemplateVars'] ); $builder->expects($this->any())->method('getTransport')->willReturn($transport); $builder->expects($this->any())->method('setTemplateOptions')->willReturnSelf(); $builder->expects($this->any())->method('setTemplateVars')->willReturnSelf(); $builder->expects($this->any())->method('setFrom')->willReturnSelf(); $builder->expects($this->any())->method('addTo')->willReturnSelf(); /** @var $queue \Magento\Newsletter\Model\Queue */ $queue = $objectManager->create(\Magento\Newsletter\Model\Queue::class, ['transportBuilder' => $builder]); $queue->load('Subject', 'newsletter_subject'); // fixture $problem = $objectManager->create(\Magento\Newsletter\Model\Problem::class); $problem->load($queue->getId(), 'queue_id'); $this->assertEmpty($problem->getId()); $queue->sendPerSubscriber(); $problem->load($queue->getId(), 'queue_id'); $this->assertNotEmpty($problem->getId()); $this->assertEquals($errorMsg, $problem->getProblemErrorText()); } }