Spaces:
No application file
No application file
| namespace MauticPlugin\MauticCrmBundle\Tests; | |
| use Mautic\EmailBundle\Helper\EmailValidator; | |
| use Mautic\LeadBundle\Deduplicate\CompanyDeduper; | |
| use Mautic\PluginBundle\Tests\Integration\AbstractIntegrationTestCase; | |
| use MauticPlugin\MauticCrmBundle\Tests\Fixtures\Model\CompanyModelStub; | |
| use MauticPlugin\MauticCrmBundle\Tests\Stubs\StubIntegration; | |
| class CrmAbstractIntegrationTest extends AbstractIntegrationTestCase | |
| { | |
| public function testFieldMatchingPriority(): void | |
| { | |
| $config = [ | |
| 'update_mautic' => [ | |
| 'email' => '1', | |
| 'first_name' => '0', | |
| 'last_name' => '0', | |
| 'address_1' => '1', | |
| 'address_2' => '1', | |
| ], | |
| ]; | |
| /** @var \PHPUnit_Framework_MockObject_MockBuilder $mockBuilder */ | |
| $mockBuilder = $this->getMockBuilder(StubIntegration::class); | |
| $mockBuilder->disableOriginalConstructor(); | |
| /** @var StubIntegration $integration */ | |
| $integration = $mockBuilder->getMock(); | |
| $methodMautic = new \ReflectionMethod(StubIntegration::class, 'getPriorityFieldsForMautic'); | |
| $methodMautic->setAccessible(true); | |
| $methodIntegration = new \ReflectionMethod(StubIntegration::class, 'getPriorityFieldsForIntegration'); | |
| $methodIntegration->setAccessible(true); | |
| $fieldsForMautic = $methodMautic->invokeArgs($integration, [$config]); | |
| $this->assertSame( | |
| ['email', 'address_1', 'address_2'], | |
| $fieldsForMautic, | |
| 'Fields to update in Mautic should return fields marked as 1 in the integration priority config.' | |
| ); | |
| $fieldsForIntegration = $methodIntegration->invokeArgs($integration, [$config]); | |
| $this->assertSame( | |
| ['first_name', 'last_name'], | |
| $fieldsForIntegration, | |
| 'Fields to update in the integration should return fields marked as 0 in the integration priority config.' | |
| ); | |
| } | |
| public function testCompanyDataIsMappedForNewCompanies(): void | |
| { | |
| $data = [ | |
| 'custom_company_name' => 'Some Business', | |
| 'some_custom_field' => 'some value', | |
| ]; | |
| $emailValidator = $this->getMockBuilder(EmailValidator::class) | |
| ->disableOriginalConstructor() | |
| ->getMock(); | |
| $companyDeduper = $this->createMock(CompanyDeduper::class); | |
| $companyModel = $this->getMockBuilder(CompanyModelStub::class) | |
| ->onlyMethods(['fetchCompanyFields', 'organizeFieldsByGroup', 'saveEntity']) | |
| ->disableOriginalConstructor() | |
| ->getMock(); | |
| $companyModel->setFieldModel($this->fieldModel); | |
| $companyModel->setEmailValidator($emailValidator); | |
| $companyModel->setCompanyDeduper($companyDeduper); | |
| $companyModel->expects($this->any()) | |
| ->method('fetchCompanyFields') | |
| ->willReturn([]); | |
| $companyModel->expects($this->once()) | |
| ->method('organizeFieldsByGroup') | |
| ->willReturn([ | |
| 'core' => [ | |
| 'companyname' => [ | |
| 'alias' => 'companyname', | |
| 'type' => 'text', | |
| ], | |
| 'custom_company_name' => [ | |
| 'alias' => 'custom_company_name', | |
| 'type' => 'text', | |
| ], | |
| 'some_custom_field' => [ | |
| 'alias' => 'some_custom_field', | |
| 'type' => 'text', | |
| ], | |
| ], | |
| ]); | |
| $integration = $this->getMockBuilder(StubIntegration::class) | |
| ->setConstructorArgs([ | |
| $this->dispatcher, | |
| $this->cache, | |
| $this->em, | |
| $this->session, | |
| $this->request, | |
| $this->router, | |
| $this->translator, | |
| $this->logger, | |
| $this->encryptionHelper, | |
| $this->leadModel, | |
| $companyModel, | |
| $this->pathsHelper, | |
| $this->notificationModel, | |
| $this->fieldModel, | |
| $this->integrationEntityModel, | |
| $this->doNotContact, | |
| ]) | |
| ->onlyMethods(['populateMauticLeadData', 'mergeConfigToFeatureSettings']) | |
| ->getMock(); | |
| $integration->expects($this->once()) | |
| ->method('populateMauticLeadData') | |
| ->willReturn($data); | |
| $company = $integration->getMauticCompany($data); | |
| $this->assertEquals('Some Business', $company->getName()); | |
| $this->assertEquals('Some Business', $company->getFieldValue('custom_company_name')); | |
| $this->assertEquals('some value', $company->getFieldValue('some_custom_field')); | |
| } | |
| public function testLimitString(): void | |
| { | |
| $integration = $this->getMockBuilder(StubIntegration::class) | |
| ->disableOriginalConstructor() | |
| ->getMock(); | |
| $methodLimitString = new \ReflectionMethod(StubIntegration::class, 'limitString'); | |
| $methodLimitString->setAccessible(true); | |
| $string = 'SomeRandomString'; | |
| $result = $methodLimitString->invokeArgs($integration, [str_repeat($string, 100), 'text']); | |
| $this->assertSame(strlen($result), 255); | |
| $result = $methodLimitString->invokeArgs($integration, [$string, 'text']); | |
| $this->assertSame(strlen($result), strlen($string)); | |
| $this->assertSame($result, $string); | |
| $result = $methodLimitString->invokeArgs($integration, [true, 'text']); | |
| $this->assertSame($result, true); | |
| $result = $methodLimitString->invokeArgs($integration, [false, 'text']); | |
| $this->assertSame($result, false); | |
| $result = $methodLimitString->invokeArgs($integration, [[1, 2, 3]]); | |
| $this->assertSame($result, [1, 2, 3]); | |
| } | |
| } | |