/** * {@inheritdoc} */ public function load(ObjectManager $manager) { $website = new TrackingWebsite(); $website->setName('website1')->setIdentifier(1)->setUrl('http://localhost'); $manager->persist($website); $campaignCodes = ['cmp1', 'cmp2', 'cmp3']; foreach ($campaignCodes as $code) { foreach ($this->data as $data) { $entity = new TrackingEvent(); $entity->setWebsite($website)->setCode($code); $data['loggedAt'] = new \DateTime($data['loggedAt'], new \DateTimeZone('UTC')); $excludeProperties = ['reference']; $propertyAccessor = PropertyAccess::createPropertyAccessor(); foreach ($data as $property => $value) { if (in_array($property, $excludeProperties)) { continue; } $propertyAccessor->setValue($entity, $property, $value); } $this->setReference($code . $data['reference'], $entity); $manager->persist($entity); } } $manager->flush(); }
/** * @dataProvider processData * @param $isFind */ public function testProcessEvent($isFind) { $event = new TrackingVisitEvent(); $webEvent = new TrackingEvent(); $webEvent->setCode('test'); $event->setWebEvent($webEvent); $testResult = new \stdClass(); $repo = $this->getMockBuilder('Doctrine\\Common\\Persistence\\ObjectRepository')->disableOriginalConstructor()->getMock(); $this->em->expects($this->once())->method('getRepository')->with('OroCRMCampaignBundle:Campaign')->willReturn($repo); $repo->expects($this->once())->method('findOneBy')->with(['code' => 'test'])->willReturn($isFind ? $testResult : null); $this->assertEquals($isFind ? [$testResult] : [], $this->provider->processEvent($event)); }
/** * Get Event dictionary for given tracking event * * @param TrackingEvent $event * @return TrackingEventDictionary */ protected function getEventType(TrackingEvent $event) { $eventWebsite = $event->getWebsite(); if ($eventWebsite && isset($this->eventDictionary[$eventWebsite->getId()], $this->eventDictionary[$eventWebsite->getId()][$event->getName()])) { $eventType = $this->eventDictionary[$eventWebsite->getId()][$event->getName()]; } else { $eventType = $this->getEntityManager()->getRepository('OroTrackingBundle:TrackingEventDictionary')->findOneBy(['name' => $event->getName(), 'website' => $eventWebsite]); } if (!$eventType) { $eventType = new TrackingEventDictionary(); $eventType->setName($event->getName()); $eventType->setWebsite($eventWebsite); $this->getEntityManager()->persist($eventType); $this->eventDictionary[$eventWebsite ? $eventWebsite->getId() : null][$event->getName()] = $eventType; } return $eventType; }
public function testPrePersist() { $this->assertNull($this->event->getCreatedAt()); $this->event->prePersist(); $this->assertInstanceOf('\\DateTime', $this->event->getCreatedAt()); }
/** * @dataProvider processEventProvider * * @param $eventType * @param $eventValue * @param $repoClass * @param $parameters * @param $channel */ public function testProcessEvent($eventType, $eventValue, $repoClass, $parameters, $channel) { $trackingEvent = new TrackingVisitEvent(); $visit = new TrackingVisit(); $channel->setChannelType(ChannelType::TYPE); $website = new TestTrackingWebsite(); $website->setChannel($channel); $visit->setTrackingWebsite($website); $trackingDict = new TrackingEventDictionary(); $trackingDict->setName($eventType); $trackingEvent->setEvent($trackingDict); $trackingEvent->setWebsite($website); $trackingEvent->setVisit($visit); $webEvent = new TrackingEvent(); $webEvent->setValue($eventValue); $trackingEvent->setWebEvent($webEvent); $repo = $this->getMockBuilder('Doctrine\\Common\\Persistence\\ObjectRepository')->disableOriginalConstructor()->getMock(); $this->em->expects($this->once())->method('getRepository')->with($repoClass)->willReturn($repo); $repo->expects($this->once())->method('findOneBy')->with($parameters)->willReturn(new \stdClass()); $this->provider->processEvent($trackingEvent); }