public function testData() { $this->assertInstanceOf('Oro\\Bundle\\WorkflowBundle\\Model\\WorkflowData', $this->workflowItem->getData()); $data = new WorkflowData(); $data['foo'] = 'Bar'; $this->workflowItem->setData($data); $this->assertEquals($data, $this->workflowItem->getData()); }
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); }
/** * @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()); }