コード例 #1
0
ファイル: ChainProcessor.php プロジェクト: Maksold/platform
 /**
  * @param ContextInterface $context
  *
  * @throws ExecutionFailedException if some processor fired an exception
  */
 protected function executeProcessors(ContextInterface $context)
 {
     $processors = $this->processorBag->getProcessors($context);
     /** @var ProcessorInterface $processor */
     foreach ($processors as $processor) {
         try {
             $processor->process($context);
         } catch (\Exception $e) {
             throw new ExecutionFailedException($processors->getProcessorId(), $processors->getAction(), $processors->getGroup(), $e);
         }
     }
 }
コード例 #2
0
ファイル: ProcessorBagTest.php プロジェクト: Maksold/platform
 public function testMinEndingCommonProcessorPriority()
 {
     $this->processorBag->addGroup('group1', 'action1');
     $this->processorBag->addProcessor('processor1', [], 'action1', 'group1');
     $this->processorBag->addProcessor('processor2', [], null, null, -256);
     $context = new Context();
     $context->setAction('action1');
     $this->processorBag->getProcessors($context);
 }
コード例 #3
0
 public function testExecuteProcessorsFailure()
 {
     $processor1 = $this->getMock('Oro\\Component\\ChainProcessor\\ProcessorInterface');
     $processor2 = $this->getMock('Oro\\Component\\ChainProcessor\\ProcessorInterface');
     $factory = $this->getMock('Oro\\Component\\ChainProcessor\\ProcessorFactoryInterface');
     $factory->expects($this->exactly(2))->method('getProcessor')->willReturnOnConsecutiveCalls($processor1, $processor2);
     $processorBag = new ProcessorBag($factory);
     $processorBag->addGroup('group1', 'action1', 20);
     $processorBag->addGroup('group2', 'action1', 10);
     $processorBag->addProcessor('processor1', [], 'action1', 'group1', 20);
     $processorBag->addProcessor('processor2', [], 'action1', 'group2', 20);
     $processorBag->addProcessor('processor3', [], 'action1', 'group2', 10);
     $context = new Context();
     $context->setAction('action1');
     $processor1->expects($this->once())->method('process')->with($this->identicalTo($context));
     $processor2->expects($this->once())->method('process')->with($this->identicalTo($context))->willThrowException(new \Exception('Some error.'));
     $chainProcessor = new ChainProcessor($processorBag);
     try {
         $chainProcessor->process($context);
         $this->fail('An exception expected');
     } catch (ExecutionFailedException $e) {
         $this->assertEquals('Processor failed: "processor2". Reason: Some error.', $e->getMessage());
         $this->assertEquals('processor2', $e->getProcessorId());
         $this->assertEquals('action1', $e->getAction());
         $this->assertEquals('group2', $e->getGroup());
         $this->assertNotNull($e->getPrevious());
         $this->assertEquals('Some error.', $e->getPrevious()->getMessage());
     } catch (\Exception $e) {
         $this->fail(sprintf('ExecutionFailedException expected. Got: %s', get_class($e)));
     }
 }
コード例 #4
0
 /**
  * @param ProcessorBag         $processorBag
  * @param string               $processorId
  * @param string|null          $dataType
  * @param string|string[]|null $requestType
  *
  * @return string
  */
 protected function addProcessor(ProcessorBag $processorBag, $processorId, $dataType = null, $requestType = null)
 {
     $attributes = [];
     if (null !== $dataType) {
         $attributes['dataType'] = $dataType;
     }
     if (null !== $requestType) {
         $attributes['requestType'] = $requestType;
     }
     $processorBag->addProcessor($processorId, $attributes, 'normalize_value', null, -10);
     return $processorId;
 }
コード例 #5
0
 public function testGroupRangeApplicableCheckerWithLastGroupOnly()
 {
     $context = new Context();
     $context->setAction('action1');
     $context->setLastGroup('group5');
     $processorBag = new ProcessorBag($this->getProcessorFactory());
     $processorBag->addGroup('group1', 'action1', -10);
     $processorBag->addGroup('group2', 'action1', -20);
     $processorBag->addGroup('group4', 'action1', -30);
     $processorBag->addGroup('group3', 'action1', -40);
     $processorBag->addGroup('group5', 'action1', -50);
     $processorBag->addGroup('group6', 'action1', -60);
     $processorBag->addProcessor('processor1_no_action', []);
     $processorBag->addProcessor('processor2_no_action', [], null, null, -65536);
     $processorBag->addProcessor('processor1_no_group', [], 'action1');
     $processorBag->addProcessor('processor2_no_group', [], 'action1', null, -65280);
     $processorBag->addProcessor('processor1', [], 'action1', 'group1');
     $processorBag->addProcessor('processor2', [], 'action1', 'group2');
     $processorBag->addProcessor('processor3', [], 'action1', 'group3');
     $processorBag->addProcessor('processor4', [], 'action1', 'group4');
     $processorBag->addProcessor('processor5', [], 'action1', 'group5');
     $processorBag->addProcessor('processor6', [], 'action1', 'group6');
     $this->assertProcessors(['processor1_no_action', 'processor1_no_group', 'processor1', 'processor2', 'processor4', 'processor3', 'processor5', 'processor2_no_group', 'processor2_no_action'], $processorBag->getProcessors($context));
 }