/** * Test that message is queued for a frequency rule value. */ public function testFrequencyRulesAreAppliedAndMessageGetsQueued() { // Setup dependencies $ipLookupHelper = $this->getMockBuilder(IpLookupHelper::class)->disableOriginalConstructor()->getMock(); $themeHelper = $this->getMockBuilder(ThemeHelper::class)->disableOriginalConstructor()->getMock(); $mailboxHelper = $this->getMockBuilder(Mailbox::class)->disableOriginalConstructor()->getMock(); $mailHelper = $this->getMockBuilder(MailHelper::class)->disableOriginalConstructor()->getMock(); $leadModel = $this->getMockBuilder(LeadModel::class)->disableOriginalConstructor()->getMock(); $trackableModel = $this->getMockBuilder(TrackableModel::class)->disableOriginalConstructor()->getMock(); $userModel = $this->getMockBuilder(UserModel::class)->disableOriginalConstructor()->getMock(); $coreParametersHelper = $this->getMockBuilder(CoreParametersHelper::class)->disableOriginalConstructor()->getMock(); // Setup the translator $translator = $this->getMockBuilder(Translator::class)->disableOriginalConstructor()->getMock(); $translator->expects($this->any())->method('has')->will($this->returnValue(false)); // Setup the repositories $emailRepository = $this->getMockBuilder(EmailRepository::class)->disableOriginalConstructor()->getMock(); $emailRepository->method('getDoNotEmailList')->will($this->returnValue([])); $statRepository = $this->getMockBuilder(StatRepository::class)->disableOriginalConstructor()->getMock(); $frequencyRepository = $this->getMockBuilder(FrequencyRuleRepository::class)->disableOriginalConstructor()->getMock(); $frequencyRepository->method('getAppliedFrequencyRules')->will($this->returnValue([['lead_id' => 1, 'frequency_number' => 1, 'frequency_time' => 'DAY']])); // Setup the EntityManager $entityManager = $this->getMockBuilder(EntityManager::class)->disableOriginalConstructor()->getMock(); $entityManager->expects($this->any())->method('getRepository')->will($this->returnValueMap([['MauticEmailBundle:Email', $emailRepository], ['MauticEmailBundle:Stat', $statRepository], ['MauticLeadBundle:FrequencyRule', $frequencyRepository]])); $messageModel = $this->getMockBuilder(MessageQueueModel::class)->disableOriginalConstructor()->getMock(); $messageModel->expects($this->exactly(1))->method('addToQueue'); $companyModel = $this->getMockBuilder(CompanyModel::class)->disableOriginalConstructor()->getMock(); $emailModel = new \Mautic\EmailBundle\Model\EmailModel($ipLookupHelper, $themeHelper, $mailboxHelper, $mailHelper, $leadModel, $companyModel, $trackableModel, $userModel, $coreParametersHelper, $messageModel); $emailModel->setTranslator($translator); $emailModel->setEntityManager($entityManager); $emailEntity = $this->getMockBuilder(Email::class)->disableOriginalConstructor()->getMock(); $emailEntity->method('getId')->will($this->returnValue(1)); $result = $emailModel->sendEmail($emailEntity, [1 => ['id' => 1, 'email' => '*****@*****.**']], ['email_type' => 'marketing']); $this->assertTrue(count($result) === 0); }
/** * Test that processMailerCallback handles an array of hashIds correctly */ public function testProcessMailerCallbackWithHashIds() { // Setup dependencies $ipLookupHelper = $this->getMockBuilder(IpLookupHelper::class)->disableOriginalConstructor()->getMock(); $themeHelper = $this->getMockBuilder(ThemeHelper::class)->disableOriginalConstructor()->getMock(); $mailboxHelper = $this->getMockBuilder(Mailbox::class)->disableOriginalConstructor()->getMock(); $mailHelper = $this->getMockBuilder(MailHelper::class)->disableOriginalConstructor()->getMock(); $leadModel = $this->getMockBuilder(LeadModel::class)->disableOriginalConstructor()->getMock(); $trackableModel = $this->getMockBuilder(TrackableModel::class)->disableOriginalConstructor()->getMock(); $userModel = $this->getMockBuilder(UserModel::class)->disableOriginalConstructor()->getMock(); $coreParametersHelper = $this->getMockBuilder(CoreParametersHelper::class)->disableOriginalConstructor()->getMock(); // Setup the translator $translator = $this->getMockBuilder(Translator::class)->disableOriginalConstructor()->getMock(); $translator->expects($this->any())->method('has')->will($this->returnValue(false)); // Setup the StatRepository $statRepository = $this->getMockBuilder(StatRepository::class)->disableOriginalConstructor()->getMock(); $statRepository->expects($this->once())->method('getTableAlias')->will($this->returnValue('s')); $leadEntity = $this->getMockBuilder(Lead::class)->disableOriginalConstructor()->getMock(); $leadEntity->expects($this->any())->method('getId')->will($this->returnValue(1)); $emailEntity = $this->getMockBuilder(Email::class)->disableOriginalConstructor()->getMock(); $emailEntity->expects($this->any())->method('getId')->will($this->returnValue(1)); $statEntity = new Stat(); $statEntity->setTrackingHash('xyz123'); $statEntity->setLead($leadEntity); $statEntity->setEmail($emailEntity); $statRepository->expects($this->any())->method('getEntities')->will($this->returnValue([$statEntity])); // Setup the EntityManager $entityManager = $this->getMockBuilder(EntityManager::class)->disableOriginalConstructor()->getMock(); $entityManager->expects($this->any())->method('getRepository')->will($this->returnValueMap([['MauticEmailBundle:Stat', $statRepository]])); $entityManager->expects($this->any())->method('getReference')->will($this->returnValue($leadEntity)); $emailModel = new \Mautic\EmailBundle\Model\EmailModel($ipLookupHelper, $themeHelper, $mailboxHelper, $mailHelper, $leadModel, $trackableModel, $userModel, $coreParametersHelper); $emailModel->setTranslator($translator); $emailModel->setEntityManager($entityManager); $response = [2 => ['hashIds' => ['xyz123' => 'some reason', '123xyz' => 'some reason']]]; $dnc = $emailModel->processMailerCallback($response); $this->assertCount(1, $dnc); }