mautic / app /bundles /LeadBundle /Tests /Entity /LeadListRepositoryFunctionalTest.php
chrisbryan17's picture
Upload folder using huggingface_hub
d2897cd verified
<?php
declare(strict_types=1);
namespace Mautic\LeadBundle\Tests\Entity;
use Mautic\CoreBundle\Test\AbstractMauticTestCase;
use Mautic\LeadBundle\Entity\Lead;
use Mautic\LeadBundle\Entity\LeadList;
use Mautic\LeadBundle\Entity\ListLead;
class LeadListRepositoryFunctionalTest extends AbstractMauticTestCase
{
public function testCheckLeadSegmentsByIds(): void
{
$lead = $this->createLead();
$segmentA = $this->createSegment();
$segmentB = $this->createSegment('B');
$segmentC = $this->createSegment('C');
$this->createSegmentMember($segmentA, $lead);
$this->createSegmentMember($segmentB, $lead, true);
$leadListRepository = $this->em->getRepository(LeadList::class);
$result = $leadListRepository->checkLeadSegmentsByIds($lead, [$segmentA->getId()]);
$this->assertTrue($result);
$result = $leadListRepository->checkLeadSegmentsByIds($lead, [$segmentB->getId()]);
$this->assertFalse($result);
$result = $leadListRepository->checkLeadSegmentsByIds($lead, [$segmentC->getId()]);
$this->assertFalse($result);
$result = $leadListRepository->checkLeadSegmentsByIds($lead, [$segmentA->getId(), $segmentB->getId(), $segmentC->getId()]);
$this->assertTrue($result);
}
private function createLead(): Lead
{
$lead = new Lead();
$lead->setFirstname('Contact');
$lead->setEmail('[email protected]');
$this->em->persist($lead);
$this->em->flush();
return $lead;
}
private function createSegment(string $suffix = 'A'): LeadList
{
$segment = new LeadList();
$segment->setName("Segment $suffix");
$segment->setPublicName("Segment $suffix");
$segment->setAlias("segment-$suffix");
$this->em->persist($segment);
$this->em->flush();
return $segment;
}
protected function createSegmentMember(LeadList $segment, Lead $lead, bool $isManuallyRemoved = false): void
{
$segmentMember = new ListLead();
$segmentMember->setLead($lead);
$segmentMember->setList($segment);
$segmentMember->setManuallyRemoved($isManuallyRemoved);
$segmentMember->setDateAdded(new \DateTime());
$this->em->persist($segmentMember);
$this->em->flush();
}
}