focusModel = static::getContainer()->get('mautic.focus.model.focus'); $this->lead = $this->createLead(); } public function testGetStats(): void { $focusPopupA = $this->createFocus('popup focus A'); $focusStatExpected = $this->setTestsData($this->lead, $focusPopupA); $to = new \DateTime('+1 day'); $from = new \DateTime('-1 month'); $focusStat = $this->focusModel->getStats($focusPopupA, null, $from, $to); $focusViewsCount = array_sum($focusStat['datasets'][0]['data']); $focusClickCount = array_sum($focusStat['datasets'][1]['data']); $this->assertEquals($focusStatExpected['view'], $focusViewsCount); $this->assertEquals($focusStatExpected['click'], $focusClickCount); } /** * @return array */ private function setTestsData(Lead $lead, Focus $focus): array { $hitPopupA = new Hit(); $hitPopupA->setLead($lead); $this->focusModel->addStat($focus, Stat::TYPE_NOTIFICATION, null, $lead); $this->focusModel->addStat($focus, Stat::TYPE_CLICK, $hitPopupA, $lead); $this->focusModel->addStat($focus, Stat::TYPE_CLICK, $hitPopupA, $lead); $this->focusModel->addStat($focus, Stat::TYPE_CLICK, $hitPopupA, $lead); $this->focusModel->addStat($focus, Stat::TYPE_CLICK, $hitPopupA, $lead); return ['view' => 1, 'click' => 4]; } private function createFocus(string $name): Focus { $focus = new Focus(); $focus->setName($name); $focus->setType('link'); $focus->setStyle('modal'); $focus->setProperties([ 'bar' => [ 'allow_hide' => 1, 'push_page' => 1, 'sticky' => 1, 'size' => 'large', 'placement' => 'top', ], 'modal' => [ 'placement' => 'top', ], 'notification' => [ 'placement' => 'top_left', ], 'page' => [], 'animate' => 0, 'link_activation' => 1, 'colors' => [ 'primary' => '4e5d9d', 'text' => '000000', 'button' => 'fdb933', 'button_text' => 'ffffff', ], 'content' => [ 'headline' => null, 'tagline' => null, 'link_text' => null, 'link_url' => null, 'link_new_window' => 1, 'font' => 'Arial, Helvetica, sans-serif', 'css' => null, ], 'when' => 'immediately', 'timeout' => null, 'frequency' => 'everypage', 'stop_after_conversion' => 1, ]); $this->focusModel->saveEntity($focus); return $focus; } private function createLead(): Lead { $lead = new Lead(); $lead->setFirstname('Contact'); $lead->setEmail('test@test.com'); $this->em->persist($lead); $this->em->flush(); return $lead; } }