Spaces:
No application file
No application file
File size: 3,208 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 88 89 90 91 92 93 94 |
<?php
declare(strict_types=1);
namespace Mautic\LeadBundle\Tests\Entity;
use Doctrine\ORM\OptimisticLockException;
use Doctrine\ORM\ORMException;
use Mautic\CoreBundle\Test\MauticMysqlTestCase;
use Mautic\EmailBundle\Entity\Stat;
use Mautic\LeadBundle\Entity\FrequencyRule;
use Mautic\LeadBundle\Entity\FrequencyRuleRepository;
use Mautic\LeadBundle\Entity\Lead;
use PHPUnit\Framework\Assert;
class FrequencyRuleRepositoryTest extends MauticMysqlTestCase
{
/**
* @var FrequencyRuleRepository
*/
private $frequencyRuleRepository;
protected function setUp(): void
{
parent::setUp();
$this->frequencyRuleRepository = static::getContainer()->get('mautic.lead.repository.frequency_rule');
}
/**
* @throws OptimisticLockException
* @throws ORMException
*/
public function testCustomFrequencyRuleViolationsMethodReturnsCorrectData(): void
{
$lead = new Lead();
$lead->setFirstname('Firstname');
$lead->setLastname('Lastname');
$lead->setEmail('[email protected]');
$lead->setPhone('555-666-777');
$this->em->persist($lead);
$frequencyRule = new FrequencyRule();
$frequencyRule->setFrequencyNumber(1);
$frequencyRule->setFrequencyTime('DAY');
$frequencyRule->setChannel('email');
$frequencyRule->setDateAdded(new \DateTime());
$frequencyRule->setLead($lead);
$this->em->persist($frequencyRule);
$emailStats1 = new Stat();
$emailStats1->setLead($lead);
$emailStats1->setEmailAddress('[email protected]');
$emailStats1->setDateSent(new \DateTime());
$emailStats1->setIsRead(true);
$emailStats1->setIsFailed(false);
$emailStats1->setViewedInBrowser(false);
$emailStats2 = new Stat();
$emailStats2->setLead($lead);
$emailStats2->setEmailAddress('[email protected]');
$emailStats2->setDateSent(new \DateTime());
$emailStats2->setIsRead(true);
$emailStats2->setIsFailed(false);
$emailStats2->setViewedInBrowser(false);
$this->em->persist($emailStats1);
$this->em->persist($emailStats2);
$this->em->flush();
$violations = $this->frequencyRuleRepository->getAppliedFrequencyRules('email', [$lead->getId()], 1, 'DAY');
$expectedViolations = [
[
'lead_id' => (string) $lead->getId(),
'frequency_number' => '1',
'frequency_time' => 'DAY',
],
];
Assert::assertSame($expectedViolations, $violations);
}
public function testValidateDefaultParameters(): void
{
$method = new \ReflectionMethod(FrequencyRuleRepository::class, 'validateDefaultParameters');
$method->setAccessible(true);
$this->assertFalse($method->invoke($this->frequencyRuleRepository, false, false));
$this->assertFalse($method->invoke($this->frequencyRuleRepository, false, true));
$this->assertFalse($method->invoke($this->frequencyRuleRepository, true, false));
$this->assertTrue($method->invoke($this->frequencyRuleRepository, true, true));
}
}
|