Spaces:
No application file
No application file
mautic
/
app
/bundles
/IntegrationsBundle
/Tests
/Unit
/Sync
/SyncDataExchange
/Internal
/ObjectProviderTest.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)); | |
| } | |
| } | |