Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\IntegrationsBundle\Tests\Unit\Sync\Helper; | |
use Mautic\IntegrationsBundle\Sync\DAO\Mapping\MappingManualDAO; | |
use Mautic\IntegrationsBundle\Sync\DAO\Sync\RelationsDAO; | |
use Mautic\IntegrationsBundle\Sync\DAO\Sync\Report\FieldDAO; | |
use Mautic\IntegrationsBundle\Sync\DAO\Sync\Report\ObjectDAO; | |
use Mautic\IntegrationsBundle\Sync\DAO\Sync\Report\RelationDAO; | |
use Mautic\IntegrationsBundle\Sync\DAO\Sync\Report\ReportDAO; | |
use Mautic\IntegrationsBundle\Sync\DAO\Value\NormalizedValueDAO; | |
use Mautic\IntegrationsBundle\Sync\DAO\Value\ReferenceValueDAO; | |
use Mautic\IntegrationsBundle\Sync\Helper\MappingHelper; | |
use Mautic\IntegrationsBundle\Sync\Helper\RelationsHelper; | |
use Mautic\IntegrationsBundle\Sync\SyncDataExchange\MauticSyncDataExchange; | |
use PHPUnit\Framework\TestCase; | |
class RelationsHelperTest extends TestCase | |
{ | |
/** | |
* @var MappingHelper|\PHPUnit\Framework\MockObject\MockObject | |
*/ | |
private \PHPUnit\Framework\MockObject\MockObject $mappingHelper; | |
private RelationsHelper $relationsHelper; | |
/** | |
* @var ReportDAO|\PHPUnit\Framework\MockObject\MockObject | |
*/ | |
private \PHPUnit\Framework\MockObject\MockObject $syncReport; | |
/** | |
* @var MappingManualDAO|\PHPUnit\Framework\MockObject\MockObject | |
*/ | |
private \PHPUnit\Framework\MockObject\MockObject $mappingManual; | |
protected function setUp(): void | |
{ | |
$this->mappingHelper = $this->createMock(MappingHelper::class); | |
$this->relationsHelper = new RelationsHelper($this->mappingHelper); | |
$this->syncReport = $this->createMock(ReportDAO::class); | |
$this->mappingManual = $this->createMock(MappingManualDAO::class); | |
} | |
public function testProcessRelationsWithUnsychronisedObjects(): void | |
{ | |
$integrationObjectId = 'IntegrationId-123'; | |
$integrationRelObjectId = 'IntegrationId-456'; | |
$relObjectName = 'Account'; | |
$relationObject = new RelationDAO( | |
'Contact', | |
'AccountId', | |
$relObjectName, | |
$integrationObjectId, | |
$integrationRelObjectId | |
); | |
$relationsObject = new RelationsDAO(); | |
$relationsObject->addRelation($relationObject); | |
$this->syncReport->expects($this->once()) | |
->method('getRelations') | |
->willReturn($relationsObject); | |
$this->mappingManual->expects($this->any()) | |
->method('getMappedInternalObjectsNames') | |
->willReturn(['company']); | |
$internalObject = new ObjectDAO('company', null); | |
$this->mappingHelper->expects($this->once()) | |
->method('findMauticObject') | |
->willReturn($internalObject); | |
$this->relationsHelper->processRelations($this->mappingManual, $this->syncReport); | |
$objectsToSynchronize = $this->relationsHelper->getObjectsToSynchronize(); | |
$this->assertCount(1, $objectsToSynchronize); | |
$this->assertEquals($objectsToSynchronize[0]->getObjectId(), $integrationRelObjectId); | |
$this->assertEquals($objectsToSynchronize[0]->getObject(), $relObjectName); | |
} | |
public function testProcessRelationsWithSychronisedObjects(): void | |
{ | |
$integrationObjectId = 'IntegrationId-123'; | |
$integrationRelObjectId = 'IntegrationId-456'; | |
$internalRelObjectId = 13; | |
$relObjectName = 'Account'; | |
$relFieldName = 'AccountId'; | |
$referenceVlaue = new ReferenceValueDAO(); | |
$normalizedValue = new NormalizedValueDAO(NormalizedValueDAO::REFERENCE_TYPE, $integrationRelObjectId, $referenceVlaue); | |
$fieldDao = new FieldDAO('AccountId', $normalizedValue); | |
$objectDao = new ObjectDAO('Contact', 1); | |
$objectDao->addField($fieldDao); | |
$relationObject = new RelationDAO( | |
'Contact', | |
$relFieldName, | |
$relObjectName, | |
$integrationObjectId, | |
$integrationRelObjectId | |
); | |
$relationsObject = new RelationsDAO(); | |
$relationsObject->addRelation($relationObject); | |
$this->syncReport->expects($this->once()) | |
->method('getRelations') | |
->willReturn($relationsObject); | |
$this->syncReport->expects($this->once()) | |
->method('getObject') | |
->willReturn($objectDao); | |
$this->mappingManual->expects($this->any()) | |
->method('getMappedInternalObjectsNames') | |
->willReturn(['company']); | |
$internalObject = new ObjectDAO(MauticSyncDataExchange::OBJECT_COMPANY, $internalRelObjectId); | |
$this->mappingHelper->expects($this->once()) | |
->method('findMauticObject') | |
->willReturn($internalObject); | |
$this->relationsHelper->processRelations($this->mappingManual, $this->syncReport); | |
$objectsToSynchronize = $this->relationsHelper->getObjectsToSynchronize(); | |
$this->assertCount(0, $objectsToSynchronize); | |
$this->assertEquals($internalRelObjectId, $objectDao->getField($relFieldName)->getValue()->getNormalizedValue()->getValue()); | |
$this->assertEquals(MauticSyncDataExchange::OBJECT_COMPANY, $objectDao->getField($relFieldName)->getValue()->getNormalizedValue()->getType()); | |
} | |
} | |