Spaces:
No application file
No application file
File size: 2,546 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 |
<?php
declare(strict_types=1);
namespace Mautic\EmailBundle\Tests\Model;
use Mautic\EmailBundle\Entity\Stat;
use Mautic\EmailBundle\Model\EmailStatModel;
use Mautic\EmailBundle\Model\TransportCallback;
use Mautic\EmailBundle\MonitoredEmail\Search\ContactFinder;
use Mautic\EmailBundle\MonitoredEmail\Search\Result;
use Mautic\LeadBundle\Entity\DoNotContact as DNC;
use Mautic\LeadBundle\Entity\Lead;
use Mautic\LeadBundle\Model\DoNotContact;
use PHPUnit\Framework\Assert;
use PHPUnit\Framework\TestCase;
class TransportCallbackTest extends TestCase
{
public function testStatSave(): void
{
$dncModel = new class() extends DoNotContact {
public function __construct()
{
}
public function addDncForContact($contactId, $channel, $reason = DNC::BOUNCED, $comments = '', $persist = true, $checkCurrentStatus = true, $allowUnsubscribeOverride = false)
{
Assert::assertSame('email', $channel);
Assert::assertSame(DNC::BOUNCED, $reason);
return true;
}
};
$contactFinder = new class() extends ContactFinder {
public function __construct()
{
}
public function findByHash($hash): Result
{
Assert::assertSame('some-hash-id', $hash);
$result = new Result();
$contact = new Lead();
$stat = new Stat();
$result->addContact($contact);
$result->setStat($stat);
return $result;
}
};
$emailStatModel = new class() extends EmailStatModel {
public function __construct()
{
}
public function saveEntity(Stat $stat): void
{
Assert::assertTrue($stat->isFailed());
Assert::assertArrayHasKey('bounces', $stat->getOpenDetails());
Assert::assertArrayHasKey(0, $stat->getOpenDetails()['bounces']);
Assert::assertArrayHasKey('datetime', $stat->getOpenDetails()['bounces'][0]);
Assert::assertArrayHasKey('reason', $stat->getOpenDetails()['bounces'][0]);
Assert::assertSame('some-comments', $stat->getOpenDetails()['bounces'][0]['reason']);
}
};
$transportCallback = new TransportCallback($dncModel, $contactFinder, $emailStatModel);
$transportCallback->addFailureByHashId('some-hash-id', 'some-comments');
}
}
|