/** * @param bool $hasLogger * @dataProvider debugDataProvider */ public function testDebug($hasLogger) { $doctrineHelper = $this->getMockBuilder('Oro\\Bundle\\EntityBundle\\ORM\\DoctrineHelper')->disableOriginalConstructor()->getMock(); $definitionName = 'test_definition'; $definition = new ProcessDefinition(); $definition->setName($definitionName); $triggerEvent = ProcessTrigger::EVENT_UPDATE; $trigger = new ProcessTrigger(); $trigger->setEvent($triggerEvent)->setDefinition($definition); $entity = new \stdClass(); $entityId = 1; $data = new ProcessData(array('data' => $entity)); $message = 'Test debug message'; $context = array('definition' => $definitionName, 'event' => $triggerEvent, 'entityId' => $entityId); if ($hasLogger) { $doctrineHelper->expects($this->once())->method('getSingleEntityIdentifier')->with($entity, false)->will($this->returnValue($entityId)); $logger = $this->getMock('Psr\\Log\\LoggerInterface'); $logger->expects($this->once())->method('debug')->with($message, $context); } else { $doctrineHelper->expects($this->never())->method('getSingleEntityIdentifier'); $logger = null; } $processLogger = new ProcessLogger($doctrineHelper, $logger); $processLogger->debug($message, $trigger, $data); }
/** * @param ProcessTrigger $processTrigger * @param ProcessData $processData * @throws InvalidParameterException */ public function handleTrigger(ProcessTrigger $processTrigger, ProcessData $processData) { $this->eventDispatcher->dispatch(ProcessEvents::HANDLE_BEFORE, new ProcessHandleEvent($processTrigger, $processData)); $process = $this->getProcess($processTrigger); $process->execute($processData); $this->logger->debug('Process executed', $processTrigger, $processData); $this->eventDispatcher->dispatch(ProcessEvents::HANDLE_AFTER, new ProcessHandleEvent($processTrigger, $processData)); }
/** * @param ProcessTrigger $processTrigger * @param ProcessData $processData * @throws InvalidParameterException */ public function handleTrigger(ProcessTrigger $processTrigger, ProcessData $processData) { $this->eventDispatcher->dispatch(ProcessEvents::HANDLE_BEFORE, new ProcessHandleEvent($processTrigger, $processData)); if (!$processData['data']) { throw new InvalidParameterException('Invalid process data. Entity can not be empty.'); } $process = $this->getProcess($processTrigger); $process->execute($processData); $this->logger->debug('Process executed', $processTrigger, $processData); $this->eventDispatcher->dispatch(ProcessEvents::HANDLE_AFTER, new ProcessHandleEvent($processTrigger, $processData)); }
/** * @param ProcessTrigger $trigger * @param object $entity * @param mixed|null $old * @param mixed|null $new */ protected function scheduleProcess(ProcessTrigger $trigger, $entity, $old = null, $new = null) { $entityClass = ClassUtils::getClass($entity); // important to set modified flag to true $data = new ProcessData(); $data->set('data', $entity); if ($old || $new) { $data->set('old', $old)->set('new', $new); } if (!$this->schedulePolicy->isScheduleAllowed($trigger, $data)) { $this->logger->debug('Policy declined process scheduling', $trigger, $data); return; } $this->scheduledProcesses[$entityClass][] = array('trigger' => $trigger, 'data' => $data); }