Exemplo n.º 1
0
 /**
  * @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);
 }
Exemplo n.º 2
0
 /**
  * {@inheritDoc}
  */
 public function load(ObjectManager $manager)
 {
     $entityManager = $this->container->get('doctrine')->getManager();
     // first definition
     $firstDefinition = new ProcessDefinition();
     $firstDefinition->setName(self::FIRST_DEFINITION)->setLabel(self::FIRST_DEFINITION)->setRelatedEntity('Test\\Entity')->setExecutionOrder(10);
     $updateTrigger = new ProcessTrigger();
     $updateTrigger->setDefinition($firstDefinition)->setEvent(ProcessTrigger::EVENT_UPDATE)->setField(self::UPDATE_TRIGGER_FIELD);
     $entityManager->persist($firstDefinition);
     $entityManager->persist($updateTrigger);
     // second definition
     $secondDefinition = new ProcessDefinition();
     $secondDefinition->setName(self::SECOND_DEFINITION)->setLabel(self::SECOND_DEFINITION)->setRelatedEntity('Test\\Entity')->setExecutionOrder(20);
     $createTrigger = new ProcessTrigger();
     $createTrigger->setDefinition($secondDefinition)->setEvent(ProcessTrigger::EVENT_CREATE);
     $deleteTrigger = new ProcessTrigger();
     $deleteTrigger->setDefinition($secondDefinition)->setEvent(ProcessTrigger::EVENT_DELETE);
     $entityManager->persist($secondDefinition);
     $entityManager->persist($createTrigger);
     $entityManager->persist($deleteTrigger);
     // disabled definition
     $disabledDefinition = new ProcessDefinition();
     $disabledDefinition->setName(self::DISABLED_DEFINITION)->setLabel(self::DISABLED_DEFINITION)->setRelatedEntity('Test\\Entity')->setExecutionOrder(30)->setEnabled(false);
     $createTrigger = new ProcessTrigger();
     $createTrigger->setDefinition($disabledDefinition)->setEvent(ProcessTrigger::EVENT_CREATE);
     $entityManager->persist($disabledDefinition);
     $entityManager->persist($createTrigger);
     $entityManager->flush();
 }
Exemplo n.º 3
0
 protected function createNewEnabledProcessDefinition()
 {
     $testEntity = new ProcessDefinition();
     $testEntity->setName('test_' . uniqid())->setLabel('Test ' . uniqid())->setEnabled(true)->setRelatedEntity('My/Test/Entity');
     $this->entityManager->persist($testEntity);
     $this->entityManager->flush($testEntity);
     return $testEntity;
 }
 /**
  * @param $name
  * @param array $configuration
  * @return ProcessDefinition
  */
 public function buildProcessDefinition($name, array $configuration)
 {
     $this->assertConfigurationOptions($configuration, array('label', 'entity'));
     $enabled = $this->getConfigurationOption($configuration, 'enabled', true);
     $order = $this->getConfigurationOption($configuration, 'order', 0);
     $excludeDefinitions = $this->getConfigurationOption($configuration, 'exclude_definitions', array());
     $actionsConfiguration = $this->getConfigurationOption($configuration, 'actions_configuration', array());
     $definition = new ProcessDefinition();
     $definition->setName($name)->setLabel($configuration['label'])->setRelatedEntity($configuration['entity'])->setEnabled($enabled)->setExecutionOrder($order)->setExcludeDefinitions($excludeDefinitions)->setActionsConfiguration($actionsConfiguration);
     return $definition;
 }
Exemplo n.º 5
0
 /**
  * {@inheritDoc}
  */
 public function load(ObjectManager $manager)
 {
     foreach ($this->definitions as $name => $config) {
         $definition = new ProcessDefinition();
         $definition->setName($name)->setLabel($name)->setRelatedEntity($config['related_entity'])->setExecutionOrder($config['execution_order'])->setEnabled($config['enabled']);
         $this->definitions[$name] = $definition;
         $manager->persist($definition);
     }
     foreach ($this->triggers as $key => $config) {
         $trigger = new ProcessTrigger();
         $trigger->setDefinition($this->definitions[$config['definition']])->setEvent($config['event'])->setField($config['field'])->setCron($config['cron']);
         $manager->persist($trigger);
         $this->addReference($key, $trigger);
     }
     $manager->flush();
 }
Exemplo n.º 6
0
 public function testImport()
 {
     $importedEntity = new ProcessDefinition();
     $importedEntity->setName('my_name')->setLabel('My Label')->setEnabled(false)->setRelatedEntity('My/Entity')->setExecutionOrder(25)->setActionsConfiguration(array('key' => 'value'));
     $this->assertNotEquals($importedEntity->getName(), $this->entity->getName());
     $this->assertNotEquals($importedEntity->getLabel(), $this->entity->getLabel());
     $this->assertNotEquals($importedEntity->getRelatedEntity(), $this->entity->getRelatedEntity());
     $this->assertNotEquals($importedEntity->getExecutionOrder(), $this->entity->getExecutionOrder());
     $this->assertNotEquals($importedEntity->getActionsConfiguration(), $this->entity->getActionsConfiguration());
     $this->assertTrue($this->entity->isEnabled());
     $this->entity->import($importedEntity);
     $this->assertEquals($importedEntity->getName(), $this->entity->getName());
     $this->assertEquals($importedEntity->getLabel(), $this->entity->getLabel());
     $this->assertEquals($importedEntity->getRelatedEntity(), $this->entity->getRelatedEntity());
     $this->assertEquals($importedEntity->getExecutionOrder(), $this->entity->getExecutionOrder());
     $this->assertEquals($importedEntity->getActionsConfiguration(), $this->entity->getActionsConfiguration());
     $this->assertTrue($this->entity->isEnabled());
     // enabled must not be changed
 }
 /**
  * @param array $configuration
  * @param array $expected
  * @dataProvider buildProcessTriggersDataProvider
  */
 public function testBuildProcessTriggers(array $configuration, array $expected)
 {
     $testDefinition = new ProcessDefinition();
     $testDefinition->setName(self::TEST_DEFINITION_NAME);
     $definitionsByName = array(self::TEST_DEFINITION_NAME => $testDefinition);
     $triggers = $this->builder->buildProcessTriggers($configuration, $definitionsByName);
     $expectedTriggers = array();
     $this->assertSameSize($expected, $configuration);
     foreach ($configuration as $definitionName => $configurationData) {
         $this->assertArrayHasKey($definitionName, $expected);
         $expectedData = $expected[$definitionName];
         $this->assertSameSize($expectedData, $configurationData);
         foreach ($expectedData as $expectedDataSet) {
             $expectedTriggers[] = $expectedDataSet;
         }
     }
     $this->assertSameSize($expectedTriggers, $triggers);
     while ($expectedTrigger = array_shift($expectedTriggers)) {
         /** @var ProcessTrigger $trigger */
         $trigger = array_shift($triggers);
         $this->assertInstanceOf('Oro\\Bundle\\WorkflowBundle\\Entity\\ProcessTrigger', $trigger);
         $this->assertNotEmpty($trigger->getDefinition());
         $this->assertInstanceOf('Oro\\Bundle\\WorkflowBundle\\Entity\\ProcessDefinition', $trigger->getDefinition());
         $definitionName = $trigger->getDefinition()->getName();
         $this->assertArrayHasKey($definitionName, $definitionsByName);
         $this->assertProcessTrigger($expectedTrigger, $definitionsByName[$definitionName], $trigger);
     }
 }
 /**
  * @param array $ids
  * @return ProcessJob[]
  */
 protected function populateProcessJobs(array $ids)
 {
     $result = [];
     foreach ($ids as $id) {
         $process = $this->getMockBuilder('Oro\\Bundle\\WorkflowBundle\\Entity\\ProcessJob')->disableOriginalConstructor()->getMock();
         $process->expects($this->any())->method('getId')->will($this->returnValue($id));
         $definition = new ProcessDefinition();
         $definition->setName('name');
         $definition->setLabel('label');
         $processTrigger = new ProcessTrigger();
         $processTrigger->setDefinition($definition);
         $process->expects($this->any())->method('getProcessTrigger')->will($this->returnValue($processTrigger));
         $result[] = $process;
     }
     return $result;
 }
 /**
  * @param array $config
  * @return ProcessTrigger
  */
 protected function getCustomQueuedTrigger(array $config)
 {
     $definition = new ProcessDefinition();
     $definition->setName('test-' . uniqid())->setRelatedEntity(self::ENTITY);
     $entityTrigger = new ProcessTrigger();
     $entityTrigger->setDefinition($definition)->setEvent($config['event'])->setQueued(true)->setPriority($config['priority'])->setTimeShift($config['timeShift']);
     return $entityTrigger;
 }
 /**
  * @param int $id
  * @return ProcessTrigger
  */
 protected function createProcessTrigger($id)
 {
     $definition = new ProcessDefinition();
     $definition->setName('name')->setLabel('label')->setRelatedEntity('\\StdClass');
     $processTrigger = new ProcessTrigger();
     $processTrigger->setDefinition($definition);
     $class = new \ReflectionClass($processTrigger);
     $prop = $class->getProperty('id');
     $prop->setAccessible(true);
     $prop->setValue($processTrigger, $id);
     return $processTrigger;
 }