Spaces:
No application file
No application file
File size: 3,190 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 |
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Tests\Unit\Sync\SyncDataExchange\Internal;
use Mautic\IntegrationsBundle\Event\InternalObjectEvent;
use Mautic\IntegrationsBundle\IntegrationEvents;
use Mautic\IntegrationsBundle\Sync\Exception\ObjectNotFoundException;
use Mautic\IntegrationsBundle\Sync\SyncDataExchange\Internal\Object\Contact;
use Mautic\IntegrationsBundle\Sync\SyncDataExchange\Internal\ObjectProvider;
use Mautic\LeadBundle\Entity\Lead;
use PHPUnit\Framework\TestCase;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class ObjectProviderTest extends TestCase
{
/**
* @var EventDispatcherInterface|\PHPUnit\Framework\MockObject\MockObject
*/
private \PHPUnit\Framework\MockObject\MockObject $dispatcher;
private ObjectProvider $objectProvider;
protected function setUp(): void
{
$this->dispatcher = $this->createMock(EventDispatcherInterface::class);
$this->objectProvider = new ObjectProvider($this->dispatcher);
}
public function testGetObjectByNameIfItDoesNotExist(): void
{
$this->dispatcher->expects($this->once())
->method('dispatch')
->with(
$this->isInstanceOf(InternalObjectEvent::class),
IntegrationEvents::INTEGRATION_COLLECT_INTERNAL_OBJECTS
);
$this->expectException(ObjectNotFoundException::class);
$this->objectProvider->getObjectByName('Unicorn');
}
public function testGetObjectByNameIfItExists(): void
{
$contact = new Contact();
$this->dispatcher->expects($this->once())
->method('dispatch')
->with(
$this->callback(function (InternalObjectEvent $e) use ($contact) {
// Fake a subscriber.
$e->addObject($contact);
return true;
}),
IntegrationEvents::INTEGRATION_COLLECT_INTERNAL_OBJECTS
);
$this->assertSame($contact, $this->objectProvider->getObjectByName(Contact::NAME));
}
public function testGetObjectByEntityNameIfItDoesNotExist(): void
{
$this->dispatcher->expects($this->once())
->method('dispatch')
->with(
$this->isInstanceOf(InternalObjectEvent::class),
IntegrationEvents::INTEGRATION_COLLECT_INTERNAL_OBJECTS,
);
$this->expectException(ObjectNotFoundException::class);
$this->objectProvider->getObjectByEntityName('Unicorn');
}
public function testGetObjectByEntityNameIfItExists(): void
{
$contact = new Contact();
$this->dispatcher->expects($this->once())
->method('dispatch')
->with(
$this->callback(function (InternalObjectEvent $e) use ($contact) {
// Fake a subscriber.
$e->addObject($contact);
return true;
}),
IntegrationEvents::INTEGRATION_COLLECT_INTERNAL_OBJECTS
);
$this->assertSame($contact, $this->objectProvider->getObjectByEntityName(Lead::class));
}
}
|