Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\CampaignBundle\Tests\Model; | |
use Doctrine\ORM\EntityManagerInterface; | |
use Mautic\CampaignBundle\CampaignEvents; | |
use Mautic\CampaignBundle\Entity\Event; | |
use Mautic\CampaignBundle\Entity\EventRepository; | |
use Mautic\CampaignBundle\Event\DeleteEvent; | |
use Mautic\CampaignBundle\Model\EventModel; | |
use Mautic\CoreBundle\Helper\CoreParametersHelper; | |
use Mautic\CoreBundle\Helper\UserHelper; | |
use Mautic\CoreBundle\Security\Permissions\CorePermissions; | |
use Mautic\CoreBundle\Translation\Translator; | |
use PHPUnit\Framework\MockObject\MockObject; | |
use PHPUnit\Framework\TestCase; | |
use Psr\Log\LoggerInterface; | |
use Symfony\Component\EventDispatcher\EventDispatcherInterface; | |
use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | |
class EventModelTest extends TestCase | |
{ | |
/** | |
* @var EntityManagerInterface|MockObject | |
*/ | |
private $entityManagerMock; | |
/** | |
* @var EventRepository|MockObject | |
*/ | |
private $eventRepositoryMock; | |
/** | |
* @var EventDispatcherInterface|MockObject | |
*/ | |
private $dispatcherMock; | |
private MockObject|EventModel $eventModel; | |
protected function setUp(): void | |
{ | |
$this->entityManagerMock = $this->createMock(EntityManagerInterface::class); | |
$this->eventRepositoryMock = $this->createMock(EventRepository::class); | |
$this->dispatcherMock = $this->createMock(EventDispatcherInterface::class); | |
$this->eventModel = new EventModel( | |
$this->entityManagerMock, | |
$this->createMock(CorePermissions::class), | |
$this->dispatcherMock, | |
$this->createMock(UrlGeneratorInterface::class), | |
$this->createMock(Translator::class), | |
$this->createMock(UserHelper::class), | |
$this->createMock(LoggerInterface::class), | |
$this->createMock(CoreParametersHelper::class) | |
); | |
} | |
public function testThatClonedEventsDoNotAttemptNullingParentInDeleteEvents(): void | |
{ | |
$this->entityManagerMock->expects($this->never()) | |
->method('getRepository') | |
->with(Event::class) | |
->willReturn($this->eventRepositoryMock); | |
$currentEvents = [ | |
'new1', | |
'new2', | |
'new3', | |
]; | |
$deletedEvents = [ | |
'new1', | |
]; | |
$this->eventModel->deleteEvents($currentEvents, $deletedEvents); | |
} | |
public function testThatItDeletesEventLogs(): void | |
{ | |
$idToDelete = 'old1'; | |
$currentEvents = [ | |
'new1', | |
]; | |
$deletedEvents = [ | |
'new1', | |
$idToDelete, | |
]; | |
$this->entityManagerMock->method('getRepository') | |
->with(Event::class) | |
->willReturn($this->eventRepositoryMock); | |
$this->eventRepositoryMock->expects($this->once()) | |
->method('nullEventRelationships') | |
->with([$idToDelete]); | |
$this->eventRepositoryMock->expects($this->once()) | |
->method('setEventsAsDeleted') | |
->with([1 => $idToDelete]); | |
$this->dispatcherMock->expects($this->once()) | |
->method('dispatch') | |
->with(new DeleteEvent([$idToDelete]), CampaignEvents::ON_EVENT_DELETE); | |
$this->eventModel->deleteEvents($currentEvents, $deletedEvents); | |
} | |
public function testDeleteEventsByCampaignId(): void | |
{ | |
/** @var EventModel&MockObject */ | |
$mockModel = $this->getMockBuilder(EventModel::class) | |
->disableOriginalConstructor() | |
->onlyMethods(['getRepository', 'deleteEventsByEventIds']) | |
->getMock(); | |
$mockModel->expects($this->once()) | |
->method('getRepository') | |
->willReturn($this->eventRepositoryMock); | |
$campaignEvents = ['1', '2', '3']; | |
$this->eventRepositoryMock->expects($this->once()) | |
->method('getCampaignEventIds') | |
->with(1) | |
->willReturn($campaignEvents); | |
$mockModel->expects($this->once())->method('deleteEventsByEventIds') | |
->with($campaignEvents); | |
$mockModel->deleteEventsByCampaignId(1); | |
} | |
} | |