mockTrackingId = hash('sha1', uniqid((string) mt_rand())); } /** * @return FormModel */ protected function getFormModel() { $requestStack = $this->createMock(RequestStack::class); $twigMock = $this->createMock(Environment::class); $themeHelper = $this->createMock(ThemeHelperInterface::class); $formActionModel = $this->createMock(ActionModel::class); $formFieldModel = $this->createMock(FieldModel::class); $this->leadModel = $this->createMock(LeadModel::class); $this->fieldHelper = $this->createMock(FormFieldHelper::class); $primaryCompanyHelper = $this->createMock(PrimaryCompanyHelper::class); $dispatcher = $this->createMock(EventDispatcher::class); $translator = $this->createMock(Translator::class); $entityManager = $this->createMock(EntityManager::class); $formUploaderMock = $this->createMock(FormUploader::class); $contactTracker = $this->createMock(ContactTracker::class); $this->leadFieldModel = $this->createMock(LeadFieldModel::class); $this->formRepository = $this->createMock(FormRepository::class); $columnSchemaHelper = $this->createMock(ColumnSchemaHelper::class); $tableSchemaHelper = $this->createMock(TableSchemaHelper::class); $mappedObjectCollector = $this->createMock(MappedObjectCollectorInterface::class); $contactTracker->expects($this ->any()) ->method('getContact') ->willReturn($this ->returnValue(['id' => self::$mockId, 'name' => self::$mockName]) ); $entityManager->expects($this ->any()) ->method('getRepository') ->will( $this->returnValueMap( [ [\Mautic\FormBundle\Entity\Form::class, $this->formRepository], ] ) ); $formModel = new FormModel( $requestStack, $twigMock, $themeHelper, $formActionModel, $formFieldModel, $this->fieldHelper, $primaryCompanyHelper, $this->leadFieldModel, $formUploaderMock, $contactTracker, $columnSchemaHelper, $tableSchemaHelper, $mappedObjectCollector, $entityManager, $this->createMock(CorePermissions::class), $dispatcher, $this->createMock(UrlGeneratorInterface::class), $translator, $this->createMock(UserHelper::class), $this->createMock(LoggerInterface::class), $this->createMock(CoreParametersHelper::class), ); return $formModel; } /** * @return SubmissionModel */ protected function getSubmissionModel() { $ipLookupHelper = $this->createMock(IpLookupHelper::class); $twigMock = $this->createMock(Environment::class); $formModel = $this->createMock(FormModel::class); $pageModel = $this->createMock(PageModel::class); $leadModel = $this->createMock(LeadModel::class); $campaignModel = $this->createMock(CampaignModel::class); $membershipManager = $this->createMock(MembershipManager::class); $leadFieldModel = $this->createMock(LeadFieldModel::class); $companyModel = $this->createMock(CompanyModel::class); $fieldHelper = $this->createMock(FormFieldHelper::class); $dispatcher = $this->createMock(EventDispatcher::class); $translator = $this->createMock(Translator::class); $this->coreParametersHelper = $this->createMock(CoreParametersHelper::class); $dateHelper = new DateHelper( 'F j, Y g:i a T', 'D, M d', 'F j, Y', 'g:i a', $translator, $this->coreParametersHelper ); $contactTracker = $this->createMock(ContactTracker::class); $userHelper = $this->createMock(UserHelper::class); $entityManager = $this->createMock(EntityManager::class); $formRepository = $this->createMock(SubmissionRepository::class); $leadRepository = $this->createMock(LeadRepository::class); $mockLogger = $this->createMock(LoggerInterface::class); $uploadFieldValidatorMock = $this->createMock(UploadFieldValidator::class); $formUploaderMock = $this->createMock(FormUploader::class); $deviceTrackingService = $this->createMock(DeviceTrackingServiceInterface::class); $file1Mock = $this->createMock(UploadedFile::class); $router = $this->createMock(RouterInterface::class); $contactMerger = $this->createMock(ContactMerger::class); $router->method('generate')->willReturn('absolute/path/somefile.jpg'); $lead = new Lead(); $lead->setId(123); $leadFieldModel->expects($this->any()) ->method('getUniqueIdentifierFields') ->willReturn(['eyJpc1B1Ymxpc2hlZCI6dHJ1ZSwiaXNVbmlxdWVJZGVudGlmZXIiOnRydWUsIm9iamVjdCI6ImxlYWQifQ==' => ['email' => 'Email']]); $contactTracker->expects($this ->any()) ->method('getContact') ->willReturn($lead); $userHelper->expects($this->any()) ->method('getUser') ->willReturn(new User()); $mockLeadField['email'] = [ 'label' => 'Email', 'alias' => 'email', 'type' => 'email', 'group' => 'core', 'group_label' => 'Core', 'defaultValue' => '', 'properties' => [], ]; $leadFieldModel->expects($this->any()) ->method('getFieldListWithProperties') ->willReturn($mockLeadField); $entityManager->expects($this->any()) ->method('getRepository') ->will( $this->returnValueMap( [ [Lead::class, $leadRepository], [Submission::class, $formRepository], ] ) ); $leadRepository->expects($this->any()) ->method('getLeadsByUniqueFields') ->willReturn(null); $file1Mock->expects($this->any()) ->method('getClientOriginalName') ->willReturn('test.jpg'); $uploadFieldValidatorMock->expects($this->any()) ->method('processFileValidation') ->willReturn($file1Mock); $ipLookupHelper->expects($this->any()) ->method('getIpAddress') ->willReturn(new IpAddress()); $companyModel->expects($this->any()) ->method('fetchCompanyFields') ->willReturn([]); $submissionModel = new SubmissionModel( $ipLookupHelper, $twigMock, $formModel, $pageModel, $leadModel, $campaignModel, $membershipManager, $leadFieldModel, $companyModel, $fieldHelper, $uploadFieldValidatorMock, $formUploaderMock, $deviceTrackingService, new FieldValueTransformer($router), $dateHelper, $contactTracker, $contactMerger, $entityManager, $this->createMock(CorePermissions::class), $dispatcher, $router, $translator, $userHelper, $mockLogger, $this->coreParametersHelper, ); return $submissionModel; } /** * @return array> */ public function getTestFormFields(): array { $fieldSession = 'mautic_'.sha1(uniqid((string) mt_rand(), true)); $fieldSession2 = 'mautic_'.sha1(uniqid((string) mt_rand(), true)); $fields[$fieldSession] = [ 'label' => 'Email', 'showLabel' => 1, 'saveResult' => 1, 'defaultValue' => false, 'alias' => 'email', 'type' => 'email', 'leadField' => 'email', 'id' => $fieldSession, ]; $fields['file'] = [ 'label' => 'File', 'showLabel' => 1, 'saveResult' => 1, 'defaultValue' => false, 'alias' => 'file', 'type' => 'file', 'id' => 'file', 'allowed_file_size' => 1, 'allowed_file_extensions' => ['jpg', 'gif'], ]; $fields['123'] = [ 'label' => 'Parent Field', 'showLabel' => 1, 'saveResult' => 1, 'defaultValue' => false, 'alias' => 'parent', 'type' => 'select', 'id' => '123', ]; $fields['456'] = [ 'label' => 'Child', 'showLabel' => 1, 'saveResult' => 1, 'defaultValue' => false, 'alias' => 'child', 'type' => 'text', 'id' => '456', 'parent' => '123', ]; $fields[$fieldSession2] = [ 'label' => 'New Child', 'showLabel' => 1, 'saveResult' => 1, 'defaultValue' => false, 'alias' => 'new_child', 'type' => 'text', 'id' => $fieldSession2, 'parent' => '123', ]; return $fields; } }