コード例 #1
0
 public function testWorkflowName()
 {
     $this->assertNull($this->workflowItem->getWorkflowName());
     $value = 'example_workflow';
     $this->workflowItem->setWorkflowName($value);
     $this->assertEquals($value, $this->workflowItem->getWorkflowName());
 }
コード例 #2
0
 /**
  * @expectedException \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
  * @expectedExceptionMessage Managed entities for workflow item not found
  */
 public function testValidateManagedEntitiesNotFound()
 {
     $workflowItem = new WorkflowItem();
     $workflowItem->setWorkflowName('test_workflow');
     $this->workflowManager->expects($this->once())->method('isAllManagedEntitiesSpecified')->with($workflowItem)->will($this->returnValue(false));
     $this->validator->validate($workflowItem);
 }
 /**
  * @param Workflow $workflow
  * @param string $currentStepName
  * @return WorkflowItem
  */
 protected function createWorkflowItem(Workflow $workflow, $currentStepName = null)
 {
     $result = new WorkflowItem();
     $result->setCurrentStepName($currentStepName);
     $result->setWorkflowName($workflow->getName());
     return $result;
 }
 /**
  * @expectedException \Oro\Bundle\WorkflowBundle\Exception\WorkflowException
  * @expectedExceptionMessage Cannot find workflow definition "test_workflow"
  */
 public function testPrePersistFails()
 {
     $entity = new WorkflowItem();
     $entity->setWorkflowName('test_workflow');
     $workflowDefinition = new WorkflowDefinition();
     $workflowDefinition->setName('test_workflow');
     $em = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')->setMethods(array('find'))->disableOriginalConstructor()->getMock();
     $em->expects($this->once())->method('find')->with('OroWorkflowBundle:WorkflowDefinition', 'test_workflow')->will($this->returnValue(null));
     $this->subscriber->prePersist(new LifecycleEventArgs($entity, $em));
 }
コード例 #5
0
ファイル: AclManagerTest.php プロジェクト: Maksold/platform
 /**
  * @expectedException \Oro\Bundle\WorkflowBundle\Exception\WorkflowException
  * @expectedExceptionMessage Value of attribute "attribute" must be an object
  */
 public function testUpdateAclIdentitiesNotAnObjectException()
 {
     $workflowName = 'test_workflow';
     $step = new WorkflowStep();
     $step->setName('step');
     $attribute = new Attribute();
     $attribute->setName('attribute')->setOption('class', 'TestEntity');
     $entityAcl = new WorkflowEntityAcl();
     $entityAcl->setStep($step)->setAttribute($attribute->getName());
     $definition = new WorkflowDefinition();
     $definition->setName($workflowName)->setSteps(array($step))->setEntityAcls(array($entityAcl));
     $this->setWorkflow($workflowName, array($attribute));
     $workflowItem = new WorkflowItem();
     $workflowItem->setWorkflowName($workflowName)->setDefinition($definition)->setCurrentStep($step);
     $workflowItem->getData()->set($attribute->getName(), 'not_an_object');
     $this->manager->updateAclIdentities($workflowItem);
 }
 public function testOnFlush()
 {
     $entity1 = new WorkflowItem();
     $entity1->setWorkflowName('workflow_1');
     $entity1->setSerializedData('_old_serialized_data');
     $data1 = new WorkflowData();
     $data1->foo = 'foo';
     $entity1->setData($data1);
     $entity2 = new WorkflowItem();
     $entity2->setWorkflowName('workflow_2');
     $data2 = new WorkflowData();
     $data2->bar = 'bar';
     $entity2->setData($data2);
     $entity3 = new \stdClass();
     $entity4 = new WorkflowItem();
     $entity4->setWorkflowName('workflow_4');
     $data4 = new WorkflowData();
     $data4->foo = 'baz';
     $entity4->setData($data4);
     $entity5 = new WorkflowItem();
     $data5 = new WorkflowData();
     // Leave this data not modified
     $entity5->setData($data5);
     $entity6 = new \stdClass();
     $expectedSerializedData1 = 'serialized_data_1';
     $expectedSerializedData2 = 'serialized_data_2';
     $expectedSerializedData4 = 'serialized_data_4';
     $this->serializer->expects($this->never())->method('deserialize');
     $this->serializer->expects($this->at(0))->method('setWorkflowName')->with($entity1->getWorkflowName());
     $this->serializer->expects($this->at(1))->method('serialize')->with($data1, 'json')->will($this->returnValue($expectedSerializedData1));
     $this->serializer->expects($this->at(2))->method('setWorkflowName')->with($entity2->getWorkflowName());
     $this->serializer->expects($this->at(3))->method('serialize')->with($data2, 'json')->will($this->returnValue($expectedSerializedData2));
     $this->serializer->expects($this->at(4))->method('setWorkflowName')->with($entity4->getWorkflowName());
     $this->serializer->expects($this->at(5))->method('serialize')->with($data4, 'json')->will($this->returnValue($expectedSerializedData4));
     $this->subscriber->onFlush(new OnFlushEventArgs($this->getOnFlushEntityManagerMock(array(array('getScheduledEntityInsertions', array(), $this->returnValue(array($entity1, $entity2, $entity3))), array('propertyChanged', array($entity1, 'serializedData', $entity1->getSerializedData(), $expectedSerializedData1)), array('propertyChanged', array($entity2, 'serializedData', $entity2->getSerializedData(), $expectedSerializedData2)), array('getScheduledEntityUpdates', array(), $this->returnValue(array($entity4, $entity5, $entity6))), array('propertyChanged', array($entity4, 'serializedData', $entity4->getSerializedData(), $expectedSerializedData4))))));
     $this->assertAttributeEquals($expectedSerializedData1, 'serializedData', $entity1);
     $this->assertAttributeEquals($expectedSerializedData2, 'serializedData', $entity2);
     $this->assertAttributeEquals($expectedSerializedData4, 'serializedData', $entity4);
     $this->assertAttributeEquals(null, 'serializedData', $entity5);
 }
コード例 #7
0
ファイル: Workflow.php プロジェクト: ramunasd/platform
 /**
  * Create workflow item.
  *
  * @param object $entity
  * @param array $data
  * @return WorkflowItem
  */
 public function createWorkflowItem($entity, array $data = array())
 {
     $entityAttributeName = $this->attributeManager->getEntityAttribute()->getName();
     $workflowItem = new WorkflowItem();
     $workflowItem->setWorkflowName($this->getName())->setEntity($entity);
     if (array_key_exists($entityAttributeName, $data)) {
         unset($data[$entityAttributeName]);
     }
     $workflowItem->getData()->set($entityAttributeName, $entity)->setFieldsMapping($this->getAttributesMapping())->add($data);
     $workflowItem->setDefinition($this->getDefinition());
     return $workflowItem;
 }
コード例 #8
0
 /**
  * @param string $workflowName
  * @return WorkflowItem
  */
 protected function createWorkflowItem($workflowName = self::TEST_WORKFLOW_NAME)
 {
     $workflowItem = new WorkflowItem();
     $workflowItem->setWorkflowName($workflowName);
     return $workflowItem;
 }
コード例 #9
0
 /**
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 public function testOnFlushAndPostFlush()
 {
     $definition = $this->getMockBuilder('Oro\\Bundle\\WorkflowBundle\\Entity\\WorkflowDefinition')->disableOriginalConstructor()->getMock();
     $definition->expects($this->any())->method('getEntityAttributeName')->will($this->returnValue('entity'));
     $entity1 = new WorkflowItem();
     $entity1->setDefinition($definition);
     $entity1->setWorkflowName('workflow_1');
     $entity1->setSerializedData('_old_serialized_data');
     $data1 = new WorkflowData();
     $data1->foo = 'foo';
     $entity1->setData($data1);
     $entity2 = new WorkflowItem();
     $entity2->setDefinition($definition);
     $entity2->setWorkflowName('workflow_2');
     $data2 = new WorkflowData();
     $data2->bar = 'bar';
     $entity2->setData($data2);
     $entity3 = new \stdClass();
     $entity4 = new WorkflowItem();
     $entity4->setDefinition($definition);
     $entity4->setWorkflowName('workflow_4');
     $data4 = new WorkflowData();
     $data4->foo = 'baz';
     $entity4->setData($data4);
     $entity5 = new WorkflowItem();
     $entity5->setDefinition($definition);
     $data5 = new WorkflowData();
     // Leave this data not modified
     $entity5->setData($data5);
     $entity6 = new \stdClass();
     $expectedSerializedData1 = 'serialized_data_1';
     $expectedSerializedData2 = 'serialized_data_2';
     $expectedSerializedData4 = 'serialized_data_4';
     $this->serializer->expects($this->never())->method('deserialize');
     $this->serializer->expects($this->at(0))->method('setWorkflowName')->with($entity1->getWorkflowName());
     $this->serializer->expects($this->at(1))->method('serialize')->with($this->isInstanceOf('Oro\\Bundle\\WorkflowBundle\\Model\\WorkflowData'), 'json')->will($this->returnCallback(function ($data) use($data1, $expectedSerializedData1) {
         $this->assertEquals($data1, $data);
         return $expectedSerializedData1;
     }));
     $this->serializer->expects($this->at(2))->method('setWorkflowName')->with($entity2->getWorkflowName());
     $this->serializer->expects($this->at(3))->method('serialize')->with($this->isInstanceOf('Oro\\Bundle\\WorkflowBundle\\Model\\WorkflowData'), 'json')->will($this->returnCallback(function ($data) use($data2, $expectedSerializedData2) {
         $this->assertEquals($data2, $data);
         return $expectedSerializedData2;
     }));
     $this->serializer->expects($this->at(4))->method('setWorkflowName')->with($entity4->getWorkflowName());
     $this->serializer->expects($this->at(5))->method('serialize')->with($this->isInstanceOf('Oro\\Bundle\\WorkflowBundle\\Model\\WorkflowData'), 'json')->will($this->returnCallback(function ($data) use($data4, $expectedSerializedData4) {
         $this->assertEquals($data4, $data);
         return $expectedSerializedData4;
     }));
     $entityManager = $this->getPostFlushEntityManagerMock(array(array('getScheduledEntityInsertions', array(), $this->returnValue(array($entity1, $entity2, $entity3))), array('getScheduledEntityUpdates', array(), $this->returnValue(array($entity4, $entity5, $entity6)))));
     $this->listener->onFlush(new OnFlushEventArgs($entityManager));
     $this->listener->postFlush(new PostFlushEventArgs($entityManager));
     $this->assertAttributeEquals($expectedSerializedData1, 'serializedData', $entity1);
     $this->assertAttributeEquals($expectedSerializedData2, 'serializedData', $entity2);
     $this->assertAttributeEquals($expectedSerializedData4, 'serializedData', $entity4);
     $this->assertAttributeEquals(null, 'serializedData', $entity5);
     $this->assertFalse($entity1->getData()->isModified());
     $this->assertFalse($entity2->getData()->isModified());
     $this->assertFalse($entity4->getData()->isModified());
     $this->assertFalse($entity5->getData()->isModified());
 }
コード例 #10
0
 /**
  * Create workflow item.
  *
  * @param array $data
  * @return WorkflowItem
  * @throws \LogicException
  */
 public function createWorkflowItem(array $data = array())
 {
     $workflowItem = new WorkflowItem();
     $workflowItem->setWorkflowName($this->getName());
     $workflowItem->getData()->add($data);
     return $workflowItem;
 }