Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\CoreBundle\Tests\Functional; | |
use Mautic\CampaignBundle\Entity\Campaign; | |
use Mautic\CampaignBundle\Entity\Event; | |
use Mautic\CategoryBundle\Entity\Category; | |
use Mautic\EmailBundle\Entity\Email; | |
use Mautic\LeadBundle\Entity\Company; | |
use Mautic\LeadBundle\Entity\Lead; | |
use Mautic\LeadBundle\Entity\LeadCategory; | |
use Mautic\LeadBundle\Entity\LeadEventLog; | |
use Mautic\LeadBundle\Entity\LeadList; | |
use Mautic\LeadBundle\Entity\ListLead; | |
trait CreateTestEntitiesTrait | |
{ | |
private function createLead(string $firstName, string $lastName = '', string $emailId = ''): Lead | |
{ | |
$lead = new Lead(); | |
$lead->setFirstname($firstName); | |
if ($lastName) { | |
$lead->setLastname($lastName); | |
} | |
if ($emailId) { | |
$lead->setEmail($emailId); | |
} | |
$this->em->persist($lead); | |
return $lead; | |
} | |
private function createCampaign(string $campaignName): Campaign | |
{ | |
$campaign = new Campaign(); | |
$campaign->setName($campaignName); | |
$campaign->setIsPublished(true); | |
$this->em->persist($campaign); | |
return $campaign; | |
} | |
/** | |
* @param mixed[] $properties | |
*/ | |
private function createEvent(string $name, Campaign $campaign, string $type, string $eventType, array $properties = []): Event | |
{ | |
$event = new Event(); | |
$event->setName($name); | |
$event->setCampaign($campaign); | |
$event->setType($type); | |
$event->setEventType($eventType); | |
$event->setTriggerInterval(1); | |
$event->setTriggerMode('immediate'); | |
if ($properties) { | |
$event->setProperties($properties); | |
} | |
$this->em->persist($event); | |
return $event; | |
} | |
/** | |
* @param mixed[] $filters | |
*/ | |
private function createSegment(string $alias, array $filters): LeadList | |
{ | |
$segment = new LeadList(); | |
$segment->setAlias($alias); | |
$segment->setName($alias); | |
$segment->setPublicName($alias); | |
$segment->setFilters($filters); | |
$this->em->persist($segment); | |
return $segment; | |
} | |
private function createCategory(string $name, string $alias, string $bundle = 'global'): Category | |
{ | |
$category = new Category(); | |
$category->setTitle($name); | |
$category->setAlias($alias); | |
$category->setBundle($bundle); | |
$this->em->persist($category); | |
return $category; | |
} | |
private function createLeadCategory(Lead $lead, Category $category, bool $flag): void | |
{ | |
$leadCategory = new LeadCategory(); | |
$leadCategory->setLead($lead); | |
$leadCategory->setCategory($category); | |
$leadCategory->setDateAdded(new \DateTime()); | |
$leadCategory->setManuallyAdded($flag); | |
$leadCategory->setManuallyRemoved(!$flag); | |
$this->em->persist($leadCategory); | |
} | |
private function createEmail(string $name): Email | |
{ | |
$email = new Email(); | |
$email->setName($name); | |
$email->setSubject('Test Subject'); | |
$email->setIsPublished(true); | |
$this->em->persist($email); | |
return $email; | |
} | |
private function createCompany(string $name, string $email): Company | |
{ | |
$company = new Company(); | |
$company->setName($name); | |
$company->setEmail($email); | |
$this->em->persist($company); | |
return $company; | |
} | |
private function createListLead(LeadList $segment, Lead $lead): void | |
{ | |
$listLead = new ListLead(); | |
$listLead->setLead($lead); | |
$listLead->setList($segment); | |
$listLead->setDateAdded(new \DateTime()); | |
$this->em->persist($listLead); | |
} | |
/** | |
* @param array<mixed> $properties | |
*/ | |
private function createLeadEventLogEntry(Lead $lead, string $bundle, string $object, string $action, int $objectId, array $properties = []): LeadEventLog | |
{ | |
$listEventLog = new LeadEventLog(); | |
$listEventLog->setLead($lead); | |
$listEventLog->setBundle($bundle); | |
$listEventLog->setObject($object); | |
$listEventLog->setAction($action); | |
$listEventLog->setObjectId($objectId); | |
$listEventLog->setProperties($properties); | |
$listEventLog->setDateAdded(new \DateTime()); | |
$this->em->persist($listEventLog); | |
return $listEventLog; | |
} | |
} | |