/** * @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); }
/** * {@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(); }
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; }
/** * {@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(); }
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; }