public function testPostFlush()
 {
     $serializedData = 'serializedData';
     $processDefinition = new ProcessDefinition();
     $processDefinition->setRelatedEntity(self::TEST_CLASS);
     $processTrigger = new ProcessTrigger();
     $processTrigger->setDefinition($processDefinition);
     $processData = new ProcessData();
     $processData->set('test', 'value');
     $processJob = new ProcessJob();
     $processJob->setProcessTrigger($processTrigger)->setData($processData);
     $unitOfWork = $this->getMockBuilder('Doctrine\\ORM\\UnitOfWork')->disableOriginalConstructor()->getMock();
     $unitOfWork->expects($this->at(0))->method('getScheduledEntityInsertions')->will($this->returnValue(array($processJob)));
     $unitOfWork->expects($this->at(1))->method('getScheduledEntityUpdates')->will($this->returnValue(array($processJob)));
     $entityId = 1;
     $entityHash = ProcessJob::generateEntityHash(self::TEST_CLASS, $entityId);
     $this->serializer->expects($this->exactly(2))->method('serialize')->with($processJob->getData(), 'json', array('processJob' => $processJob))->will($this->returnCallback(function () use($processJob, $entityId, $serializedData) {
         $processJob->setEntityId($entityId);
         return $serializedData;
     }));
     $entityManager = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->getMock();
     $entityManager->expects($this->any())->method('getUnitOfWork')->will($this->returnValue($unitOfWork));
     $entityManager->expects($this->once())->method('flush');
     $this->listener->onFlush(new OnFlushEventArgs($entityManager));
     $this->listener->postFlush(new PostFlushEventArgs($entityManager));
     $this->assertEquals($serializedData, $processJob->getSerializedData());
     $this->assertEquals($entityId, $processJob->getEntityId());
     $this->assertEquals($entityHash, $processJob->getEntityHash());
     $this->assertFalse($processJob->getData()->isModified());
 }
 /**
  * @param ProcessTrigger $trigger
  * @param ProcessData $data
  * @return ProcessJob
  */
 protected function queueProcess(ProcessTrigger $trigger, ProcessData $data)
 {
     $processJob = new ProcessJob();
     $processJob->setProcessTrigger($trigger)->setData($data);
     return $processJob;
 }
 /**
  * Serialize data of ProcessJob
  *
  * @param ProcessJob $processJob
  */
 protected function serialize(ProcessJob $processJob)
 {
     $processData = $processJob->getData();
     $serializedData = $this->serializer->serialize($processData, $this->format, array('processJob' => $processJob));
     $processJob->setSerializedData($serializedData);
     $processData->setModified(false);
 }
 /**
  * @param string $event
  * @return ProcessJob
  */
 protected function createProcessJob($event)
 {
     $definition = new ProcessDefinition();
     $definition->setRelatedEntity('Test\\Entity');
     $trigger = new ProcessTrigger();
     $trigger->setDefinition($definition)->setEvent($event);
     $job = new ProcessJob();
     $job->setProcessTrigger($trigger);
     return $job;
 }
 public function testPostFlushRemovedEntityHashes()
 {
     $entityClass = self::ENTITY;
     $entity = new $entityClass();
     $entityId = 1;
     $this->prepareRegistry(array());
     $this->prepareTriggerCache($entityClass, ProcessTrigger::EVENT_DELETE);
     $entityManager = $this->getEntityManager();
     // expectations
     $expectedEntityHashes = array(ProcessJob::generateEntityHash($entityClass, $entityId));
     $this->doctrineHelper->expects($this->once())->method('getSingleEntityIdentifier')->with($entity, false)->will($this->returnValue($entityId));
     $repository = $this->getMockBuilder('Oro\\Bundle\\WorkflowBundle\\Entity\\Repository\\ProcessJobRepository')->disableOriginalConstructor()->setMethods(array('deleteByHashes'))->getMock();
     $repository->expects($this->once())->method('deleteByHashes');
     $this->registry->expects($this->at(1))->method('getRepository')->with('OroWorkflowBundle:ProcessJob')->will($this->returnValue($repository));
     // test
     $this->callPreFunctionByEventName(ProcessTrigger::EVENT_DELETE, $entity, $entityManager);
     $this->assertAttributeEquals($expectedEntityHashes, 'removedEntityHashes', $this->listener);
     $this->handler->expects($this->never())->method($this->anything());
     $this->listener->postFlush(new PostFlushEventArgs($entityManager));
     $this->assertAttributeEmpty('removedEntityHashes', $this->listener);
 }
 /**
  * @param integer $count
  * @return array
  */
 protected function createProcessJobs($count)
 {
     $definition = $this->entityManager->find('OroWorkflowBundle:ProcessDefinition', LoadProcessEntities::FIRST_DEFINITION);
     $trigger = $this->entityManager->getRepository('OroWorkflowBundle:ProcessTrigger')->findOneBy(['definition' => $definition]);
     $entity = $this->getUser();
     $entityHashes = [];
     for ($i = 0; $i < $count; $i++) {
         $processData = new ProcessData();
         $processData->set('data', $entity);
         $job = new ProcessJob();
         $job->setProcessTrigger($trigger)->setEntityId($i)->setData($processData);
         $this->entityManager->persist($job);
         $entityHashes[] = $job->getEntityHash();
     }
     $this->entityManager->flush();
     return $entityHashes;
 }
示例#7
0
 /**
  * @param ProcessJob $processJob
  */
 public function finishJob(ProcessJob $processJob)
 {
     $this->finishTrigger($processJob->getProcessTrigger(), $processJob->getData());
 }
示例#8
0
 /**
  * @expectedException \LogicException
  * @expectedExceptionMessage Process definition must be defined for process jo
  */
 public function testSetEntityIdNoDefinition()
 {
     $this->entity->setProcessTrigger(new ProcessTrigger());
     $this->entity->setEntityId(1);
 }