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); }
/** * 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; }
public function testGetFields() { $fields = $this->entityData->getFields(); $this->assertCount(1, $fields); $this->assertInstanceOf('Oro\\Bundle\\EntityMergeBundle\\Data\\FieldData', $fields[$this->fieldName]); }
/** * 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); }