Spaces:
No application file
No application file
File size: 3,110 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
<?php
declare(strict_types=1);
namespace Mautic\CampaignBundle\Tests\Executioner\Dispatcher;
use Doctrine\Common\Collections\ArrayCollection;
use Mautic\CampaignBundle\CampaignEvents;
use Mautic\CampaignBundle\Entity\LeadEventLog;
use Mautic\CampaignBundle\Event\DecisionEvent;
use Mautic\CampaignBundle\Event\DecisionResultsEvent;
use Mautic\CampaignBundle\EventCollector\Accessor\Event\DecisionAccessor;
use Mautic\CampaignBundle\Executioner\Dispatcher\DecisionDispatcher;
use Mautic\CampaignBundle\Executioner\Dispatcher\LegacyEventDispatcher;
use Mautic\CampaignBundle\Executioner\Result\EvaluatedContacts;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class DecisionDispatcherTest extends TestCase
{
/**
* @var MockObject|EventDispatcherInterface
*/
private MockObject $dispatcher;
/**
* @var MockObject|LegacyEventDispatcher
*/
private MockObject $legacyDispatcher;
/**
* @var MockObject|DecisionAccessor
*/
private MockObject $config;
private DecisionDispatcher $decisionDispatcher;
protected function setUp(): void
{
$this->dispatcher = $this->createMock(EventDispatcherInterface::class);
$this->legacyDispatcher = $this->createMock(LegacyEventDispatcher::class);
$this->config = $this->createMock(DecisionAccessor::class);
$this->decisionDispatcher = new DecisionDispatcher($this->dispatcher, $this->legacyDispatcher);
}
public function testDecisionEventIsDispatched(): void
{
$this->config->expects($this->once())
->method('getEventName')
->willReturn('something');
$this->legacyDispatcher->expects($this->never())
->method('dispatchDecisionEvent');
$this->dispatcher->expects($this->once())
->method('dispatch')
->with($this->isInstanceOf(DecisionEvent::class), 'something');
$this->decisionDispatcher->dispatchRealTimeEvent($this->config, new LeadEventLog(), null);
}
public function testDecisionEvaluationEventIsDispatched(): void
{
$this->config->expects($this->never())
->method('getEventName');
$this->legacyDispatcher->expects($this->once())
->method('dispatchDecisionEvent');
$this->dispatcher->expects($this->once())
->method('dispatch')
->with($this->isInstanceOf(DecisionEvent::class), CampaignEvents::ON_EVENT_DECISION_EVALUATION);
$this->decisionDispatcher->dispatchEvaluationEvent($this->config, new LeadEventLog());
}
public function testDecisionResultsEventIsDispatched(): void
{
$this->dispatcher->expects($this->once())
->method('dispatch')
->with($this->isInstanceOf(DecisionResultsEvent::class), CampaignEvents::ON_EVENT_DECISION_EVALUATION_RESULTS);
$this->decisionDispatcher->dispatchDecisionResultsEvent($this->config, new ArrayCollection([new LeadEventLog()]), new EvaluatedContacts());
}
}
|