Spaces:
No application file
No application file
File size: 4,139 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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
<?php
namespace Mautic\EmailBundle\Tests\MonitoredEmail\Search;
use Mautic\EmailBundle\Entity\Email;
use Mautic\EmailBundle\Entity\Stat;
use Mautic\EmailBundle\Entity\StatRepository;
use Mautic\EmailBundle\MonitoredEmail\Search\ContactFinder;
use Mautic\EmailBundle\MonitoredEmail\Search\Result;
use Mautic\LeadBundle\Entity\Lead;
use Mautic\LeadBundle\Entity\LeadRepository;
use Monolog\Logger;
class ContactFinderTest extends \PHPUnit\Framework\TestCase
{
/**
* @testdox Contact should be found via contact email address
*
* @covers \Mautic\EmailBundle\MonitoredEmail\Search\ContactFinder::find
* @covers \Mautic\EmailBundle\MonitoredEmail\Search\ContactFinder::findByAddress
* @covers \Mautic\EmailBundle\MonitoredEmail\Search\Result::setStat
* @covers \Mautic\EmailBundle\MonitoredEmail\Search\Result::getStat
* @covers \Mautic\EmailBundle\MonitoredEmail\Search\Result::setContacts
* @covers \Mautic\EmailBundle\MonitoredEmail\Search\Result::getContacts
*/
public function testContactFoundByDelegationForAddress(): void
{
$lead = new Lead();
$lead->setEmail('[email protected]');
$statRepository = $this->getMockBuilder(StatRepository::class)
->disableOriginalConstructor()
->getMock();
$statRepository->expects($this->never())
->method('findOneBy');
$leadRepository = $this->getMockBuilder(LeadRepository::class)
->disableOriginalConstructor()
->getMock();
$leadRepository->expects($this->once())
->method('getContactsByEmail')
->willReturn([$lead]);
$logger = $this->getMockBuilder(Logger::class)
->disableOriginalConstructor()
->getMock();
$finder = new ContactFinder($statRepository, $leadRepository, $logger);
$result = $finder->find($lead->getEmail(), '[email protected]');
$this->assertInstanceOf(Result::class, $result);
$this->assertEquals($result->getContacts(), [$lead]);
}
/**
* @testdox Contact should be found via a hash in to email address
*
* @covers \Mautic\EmailBundle\MonitoredEmail\Search\ContactFinder::find
* @covers \Mautic\EmailBundle\MonitoredEmail\Search\ContactFinder::findByHash
* @covers \Mautic\EmailBundle\MonitoredEmail\Processor\Address::parseAddressForStatHash
* @covers \Mautic\EmailBundle\MonitoredEmail\Search\Result::setStat
* @covers \Mautic\EmailBundle\MonitoredEmail\Search\Result::getStat
* @covers \Mautic\EmailBundle\MonitoredEmail\Search\Result::addContact
* @covers \Mautic\EmailBundle\MonitoredEmail\Search\Result::getContacts
*/
public function testContactFoundByDelegationForHash(): void
{
$lead = new Lead();
$lead->setEmail('[email protected]');
$stat = new Stat();
$stat->setLead($lead);
$statRepository = $this->getMockBuilder(StatRepository::class)
->disableOriginalConstructor()
->getMock();
$statRepository->expects($this->once())
->method('findOneBy')
->willReturnCallback(
function ($hash) use ($stat) {
$stat->setTrackingHash($hash);
$email = new Email();
$stat->setEmail($email);
return $stat;
}
);
$leadRepository = $this->getMockBuilder(LeadRepository::class)
->disableOriginalConstructor()
->getMock();
$leadRepository->expects($this->never())
->method('getContactsByEmail');
$logger = $this->getMockBuilder(Logger::class)
->disableOriginalConstructor()
->getMock();
$finder = new ContactFinder($statRepository, $leadRepository, $logger);
$result = $finder->find($lead->getEmail(), '[email protected]');
$this->assertInstanceOf(Result::class, $result);
$this->assertEquals($result->getStat(), $stat);
$this->assertEquals($result->getContacts(), [$lead]);
}
}
|