Spaces:
No application file
No application file
mautic
/
app
/bundles
/IntegrationsBundle
/Tests
/Unit
/Sync
/SyncDataExchange
/Helper
/FieldHelperTest.php
| declare(strict_types=1); | |
| namespace Mautic\IntegrationsBundle\Tests\Unit\Sync\SyncDataExchange\Helper; | |
| use Mautic\ChannelBundle\Helper\ChannelListHelper; | |
| use Mautic\IntegrationsBundle\Event\MauticSyncFieldsLoadEvent; | |
| use Mautic\IntegrationsBundle\Sync\DAO\Value\NormalizedValueDAO; | |
| use Mautic\IntegrationsBundle\Sync\SyncDataExchange\Helper\FieldHelper; | |
| use Mautic\IntegrationsBundle\Sync\SyncDataExchange\Internal\Object\Contact; | |
| use Mautic\IntegrationsBundle\Sync\SyncDataExchange\Internal\ObjectProvider; | |
| use Mautic\IntegrationsBundle\Sync\VariableExpresser\VariableExpresserHelperInterface; | |
| use Mautic\LeadBundle\Model\FieldModel; | |
| use PHPUnit\Framework\TestCase; | |
| use Symfony\Component\EventDispatcher\EventDispatcherInterface; | |
| use Symfony\Contracts\Translation\TranslatorInterface; | |
| class FieldHelperTest extends TestCase | |
| { | |
| /** | |
| * @var FieldModel|\PHPUnit\Framework\MockObject\MockObject | |
| */ | |
| private \PHPUnit\Framework\MockObject\MockObject $fieldModel; | |
| /** | |
| * @var VariableExpresserHelperInterface|\PHPUnit\Framework\MockObject\MockObject | |
| */ | |
| private \PHPUnit\Framework\MockObject\MockObject $variableExpresserHelper; | |
| /** | |
| * @var ChannelListHelper | |
| */ | |
| private \PHPUnit\Framework\MockObject\MockObject $channelListHelper; | |
| private \PHPUnit\Framework\MockObject\MockObject $eventDispatcher; | |
| /** | |
| * @var MauticSyncFieldsLoadEvent|\PHPUnit\Framework\MockObject\MockObject | |
| */ | |
| private \PHPUnit\Framework\MockObject\MockObject $mauticSyncFieldsLoadEvent; | |
| /** | |
| * @var ObjectProvider|\PHPUnit\Framework\MockObject\MockObject | |
| */ | |
| private \PHPUnit\Framework\MockObject\MockObject $objectProvider; | |
| private FieldHelper $fieldHelper; | |
| protected function setUp(): void | |
| { | |
| $this->fieldModel = $this->createMock(FieldModel::class); | |
| $this->variableExpresserHelper = $this->createMock(VariableExpresserHelperInterface::class); | |
| $this->channelListHelper = $this->createMock(ChannelListHelper::class); | |
| $this->objectProvider = $this->createMock(ObjectProvider::class); | |
| $this->channelListHelper->method('getFeatureChannels') | |
| ->willReturn(['Email' => 'email']); | |
| $this->mauticSyncFieldsLoadEvent = $this->createMock(MauticSyncFieldsLoadEvent::class); | |
| $this->eventDispatcher = $this->createMock(EventDispatcherInterface::class); | |
| $this->eventDispatcher->method('dispatch') | |
| ->willReturn($this->mauticSyncFieldsLoadEvent); | |
| $this->fieldHelper = new FieldHelper( | |
| $this->fieldModel, | |
| $this->variableExpresserHelper, | |
| $this->channelListHelper, | |
| $this->createMock(TranslatorInterface::class), | |
| $this->eventDispatcher, | |
| $this->objectProvider | |
| ); | |
| } | |
| public function testContactSyncFieldsReturned(): void | |
| { | |
| $objectName = Contact::NAME; | |
| $syncFields = ['email' => 'Email']; | |
| $this->mauticSyncFieldsLoadEvent->method('getObjectName') | |
| ->willReturn($objectName); | |
| $this->mauticSyncFieldsLoadEvent->method('getFields') | |
| ->willReturn($syncFields); | |
| $this->fieldModel->method('getFieldList') | |
| ->willReturn($syncFields); | |
| $fields = $this->fieldHelper->getSyncFields($objectName); | |
| $this->assertEquals( | |
| [ | |
| 'email', | |
| 'mautic_internal_contact_timeline', | |
| 'mautic_internal_dnc_email', | |
| 'mautic_internal_id', | |
| ], | |
| array_keys($fields) | |
| ); | |
| } | |
| public function testCompanySyncFieldsReturned(): void | |
| { | |
| $objectName = Contact::NAME; | |
| $syncFields = ['email' => 'Email']; | |
| $this->mauticSyncFieldsLoadEvent->method('getObjectName') | |
| ->willReturn($objectName); | |
| $this->mauticSyncFieldsLoadEvent->method('getFields') | |
| ->willReturn($syncFields); | |
| $this->fieldModel->method('getFieldList') | |
| ->willReturn($syncFields); | |
| $fields = $this->fieldHelper->getSyncFields($objectName); | |
| $this->assertEquals( | |
| [ | |
| 'email', | |
| 'mautic_internal_contact_timeline', | |
| 'mautic_internal_dnc_email', | |
| 'mautic_internal_id', | |
| ], | |
| array_keys($fields) | |
| ); | |
| } | |
| public function testGetRequiredFieldsForContact(): void | |
| { | |
| $this->fieldModel->expects($this->once()) | |
| ->method('getFieldList') | |
| ->willReturn(['some fields']); | |
| $this->fieldModel->expects($this->once()) | |
| ->method('getUniqueIdentifierFields') | |
| ->willReturn(['some unique fields']); | |
| $this->assertSame( | |
| ['some fields', 'some unique fields'], | |
| $this->fieldHelper->getRequiredFields('lead') | |
| ); | |
| // Call it for the second time to ensure the result was cached, | |
| $this->assertSame( | |
| ['some fields', 'some unique fields'], | |
| $this->fieldHelper->getRequiredFields('lead') | |
| ); | |
| } | |
| public function testGetRequiredFieldsForCompany(): void | |
| { | |
| $this->fieldModel->expects($this->once()) | |
| ->method('getFieldList') | |
| ->willReturn(['some fields']); | |
| $this->fieldModel->expects($this->never()) | |
| ->method('getUniqueIdentifierFields'); | |
| $this->assertSame( | |
| ['some fields'], | |
| $this->fieldHelper->getRequiredFields('company') | |
| ); | |
| // Call it for the second time to ensure the result was cached, | |
| $this->assertSame( | |
| ['some fields'], | |
| $this->fieldHelper->getRequiredFields('company') | |
| ); | |
| } | |
| public function testGetFieldObjectName(): void | |
| { | |
| $this->objectProvider->expects($this->once()) | |
| ->method('getObjectByName') | |
| ->with(Contact::NAME) | |
| ->willReturn(new Contact()); | |
| $this->assertSame( | |
| Contact::ENTITY, | |
| $this->fieldHelper->getFieldObjectName(Contact::NAME) | |
| ); | |
| } | |
| public function testGetNormalizedFieldType(): void | |
| { | |
| $this->assertEquals(NormalizedValueDAO::BOOLEAN_TYPE, $this->fieldHelper->getNormalizedFieldType('boolean')); | |
| $this->assertEquals(NormalizedValueDAO::DATETIME_TYPE, $this->fieldHelper->getNormalizedFieldType('date')); | |
| $this->assertEquals(NormalizedValueDAO::DATETIME_TYPE, $this->fieldHelper->getNormalizedFieldType('datetime')); | |
| $this->assertEquals(NormalizedValueDAO::DATETIME_TYPE, $this->fieldHelper->getNormalizedFieldType('time')); | |
| $this->assertEquals(NormalizedValueDAO::FLOAT_TYPE, $this->fieldHelper->getNormalizedFieldType('number')); | |
| $this->assertEquals(NormalizedValueDAO::SELECT_TYPE, $this->fieldHelper->getNormalizedFieldType('select')); | |
| $this->assertEquals(NormalizedValueDAO::MULTISELECT_TYPE, $this->fieldHelper->getNormalizedFieldType('multiselect')); | |
| $this->assertEquals(NormalizedValueDAO::STRING_TYPE, $this->fieldHelper->getNormalizedFieldType('default')); | |
| } | |
| } | |