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; }
/** * @param ProcessJob $processJob */ public function finishJob(ProcessJob $processJob) { $this->finishTrigger($processJob->getProcessTrigger(), $processJob->getData()); }
/** * @expectedException \LogicException * @expectedExceptionMessage Process definition must be defined for process jo */ public function testSetEntityIdNoDefinition() { $this->entity->setProcessTrigger(new ProcessTrigger()); $this->entity->setEntityId(1); }