public function testMerge()
 {
     $account1 = new User();
     $account2 = new User();
     $this->setId($account1, 1);
     $this->setId($account2, 2);
     $entityMetadata = new EntityMetadata(['type' => ClassUtils::getRealClass($account1)]);
     $entityData = new EntityData($entityMetadata, [$account1, $account2]);
     $entityData->setMasterEntity($account1);
     $fieldData = new FieldData($entityData, new FieldMetadata());
     $fieldData->setMode(MergeModes::NOTES_REPLACE);
     $fieldData->setSourceEntity($account2);
     $queryBuilder = $this->getMockBuilder('Doctrine\\ORM\\QueryBuilder')->disableOriginalConstructor()->setMethods(['getQuery', 'getResult'])->getMock();
     $queryBuilder->expects($this->any())->method('getQuery')->will($this->returnSelf());
     $queryBuilder->expects($this->any())->method('getResult')->will($this->returnValue([new ExtendNote()]));
     $repository = $this->getMockBuilder('Oro\\Bundle\\ActivityListBundle\\Entity\\Repository\\ActivityListRepository')->disableOriginalConstructor()->setMethods(['getBaseAssociatedNotesQB', 'getActivityListQueryBuilderByActivityClass'])->getMock();
     $repository->expects($this->any())->method('getBaseAssociatedNotesQB')->willReturn($queryBuilder);
     $activityQueryBuilder = $this->getMockBuilder('Doctrine\\ORM\\QueryBuilder')->disableOriginalConstructor()->setMethods(['getQuery', 'getResult'])->getMock();
     $activityQueryBuilder->expects($this->any())->method('getQuery')->will($this->returnSelf());
     $activityQueryBuilder->expects($this->any())->method('getResult')->will($this->returnValue([['id' => 1, 'relatedActivityId' => 11], ['id' => 3, 'relatedActivityId' => 2]]));
     $repository->expects($this->any())->method('getActivityListQueryBuilderByActivityClass')->willReturn($activityQueryBuilder);
     $entityManager = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->setMethods(['remove'])->getMock();
     $this->doctrineHelper->expects($this->any())->method('getEntityRepository')->willReturn($repository);
     $this->doctrineHelper->expects($this->any())->method('getEntityManager')->willReturn($entityManager);
     $this->activityListManager->expects($this->once())->method('replaceActivityTargetWithPlainQuery');
     $this->strategy->merge($fieldData);
 }
 public function testAfterMergeEntity()
 {
     $this->entityData->expects($this->any())->method('getMasterEntity')->will($this->returnValue($this->createTaggableEntity('foo')));
     $event = new EntityDataEvent($this->entityData);
     $this->manager->expects($this->once())->method('saveTagging');
     $this->helper->expects($this->once())->method('isTaggable')->willReturn(true);
     $this->listener->afterMergeEntity($event);
 }
Beispiel #3
0
 /**
  * Merge fields
  *
  * @param EntityData $data
  */
 public function run(EntityData $data)
 {
     foreach ($data->getFields() as $field) {
         $this->eventDispatcher->dispatch(MergeEvents::BEFORE_MERGE_FIELD, new FieldDataEvent($field));
         $this->strategy->merge($field);
         $this->eventDispatcher->dispatch(MergeEvents::AFTER_MERGE_FIELD, new FieldDataEvent($field));
     }
 }
 /**
  * Merge fields
  *
  * @param EntityData $data
  */
 public function run(EntityData $data)
 {
     $masterEntity = $data->getMasterEntity();
     foreach ($data->getEntities() as $entity) {
         if (!$this->doctrineHelper->isEntityEqual($masterEntity, $entity)) {
             $this->entityManager->remove($entity);
         }
     }
 }
 /**
  * Get entities that are not master.
  *
  * @param EntityData $entityData
  * @return array
  */
 protected function getEntitiesToClear(EntityData $entityData)
 {
     $result = array();
     $masterEntity = $entityData->getMasterEntity();
     foreach ($entityData->getEntities() as $entity) {
         if (!$this->doctrineHelper->isEntityEqual($masterEntity, $entity)) {
             $result[] = $entity;
         }
     }
     return $result;
 }
Beispiel #6
0
 public function testGetFields()
 {
     $fields = $this->entityData->getFields();
     $this->assertCount(1, $fields);
     $this->assertInstanceOf('Oro\\Bundle\\EntityMergeBundle\\Data\\FieldData', $fields[$this->fieldName]);
 }
Beispiel #7
0
 /**
  * Render label of merge entity
  *
  * @param EntityData $entityData
  * @param int $entityOffset
  * @return string
  */
 public function renderMergeEntityLabel(EntityData $entityData, $entityOffset)
 {
     $entity = $entityData->getEntityByOffset($entityOffset);
     $metadata = $entityData->getMetadata();
     return $this->fieldValueRenderer->renderEntityLabel($entity, $metadata);
 }