. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace tests\integration\Espo\LeadCapture; use Espo\Core\Record\CreateParams; use Espo\Core\Record\ServiceContainer; use Espo\Entities\LeadCapture; use Espo\ORM\EntityManager; use Espo\Tools\LeadCapture\CaptureService; use tests\integration\Core\BaseTestCase; class LeadCaptureTest extends BaseTestCase { public function testCapture():void { $entityManager = $this->getContainer()->getByClass(EntityManager::class); $targetList = $entityManager->getNewEntity('TargetList'); $entityManager->saveEntity($targetList); $team = $entityManager->getNewEntity('Team'); $entityManager->saveEntity($team); $recordService = $this->getContainer()->getByClass(ServiceContainer::class)->getByClass(LeadCapture::class); $service = $this->getInjectableFactory()->create(CaptureService::class); $leadCaptureData = (object) [ 'name' => 'test', 'subscribeToTargetList' => true, 'targetListId' => $targetList->getId(), 'targetTeamId' => $team->getId(), 'fieldList' => ['name', 'emailAddress'], 'leadSource' => 'Web Site' ]; $leadCapture = $recordService->create($leadCaptureData, CreateParams::create()); $this->assertNotEmpty($leadCapture->get('apiKey')); $data = (object) [ 'firstName' => 'Test', 'lastName' => 'Tester', 'emailAddress' => 'test@tester.com' ]; $service->capture($leadCapture->get('apiKey'), $data); $lead = $entityManager ->getRDBRepository('Lead') ->where(['emailAddress' => 'test@tester.com']) ->findOne(); $this->assertNotNull($lead); $this->assertEquals('Web Site', $lead->get('source')); $this->assertTrue($entityManager->getRelation($lead, 'teams')->isRelatedById($team->getId())); $this->assertTrue($entityManager->getRelation($lead, 'targetLists')->isRelatedById($targetList->getId())); } }