public function testCheckConfigWhenItIsAlreadyUpToDate()
 {
     $this->configProvider->addEntityConfig(self::CLASS_NAMESPACE . '\\Entity\\TestEntity1', ['schema' => ['class' => self::CLASS_NAMESPACE . '\\Entity\\TestEntity1', 'entity' => self::CLASS_NAMESPACE . '\\cache\\EX_OroEntityConfigBundle_Entity1', 'type' => 'Extend', 'parent' => self::CLASS_NAMESPACE . '\\Model\\ExtendEntity1', 'inherit' => false]]);
     $this->configProvider->addEntityConfig(self::CLASS_NAMESPACE . '\\Entity\\TestEntity2', ['schema' => ['class' => self::CLASS_NAMESPACE . '\\Entity\\TestEntity2', 'entity' => self::CLASS_NAMESPACE . '\\cache\\EX_OroEntityConfigBundle_Entity2', 'type' => 'Extend', 'parent' => self::CLASS_NAMESPACE . '\\Model\\ExtendEntity2', 'inherit' => self::CLASS_NAMESPACE . '\\TestAbstractClass']], true);
     $this->configManager->expects($this->never())->method('persist');
     $this->configManager->expects($this->never())->method('flush');
     $this->dumper->setCacheDir($this->cacheDir . '_other');
     $this->dumper->checkConfig();
 }
 protected function setUp()
 {
     $configManager = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\Config\\ConfigManager')->disableOriginalConstructor()->getMock();
     $extendConfigProvider = new ConfigProviderMock($configManager, 'extend');
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'activeField', 'int');
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'activeHiddenField', 'int', [], true);
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'deletedField', 'int', ['is_deleted' => true]);
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'toBeDeletedField', 'int', ['state' => ExtendScope::STATE_DELETE]);
     $this->validator = new UniqueExtendEntityFieldValidator(new FieldNameValidationHelper($extendConfigProvider));
 }
 /**
  * @param array  $values
  * @param string $className
  *
  * @return Config
  */
 protected function addEntityConfig($values = [], $className = 'Test\\SourceEntity')
 {
     $resultValues = ['owner' => ExtendScope::OWNER_CUSTOM, 'is_extend' => true, 'state' => ExtendScope::STATE_NEW, 'is_deleted' => false, 'upgradeable' => false, 'relation' => [], 'schema' => [], 'index' => []];
     if (!empty($values)) {
         $resultValues = array_merge($resultValues, $values);
     }
     return $this->extendConfigProvider->addEntityConfig($className, $resultValues);
 }
 protected function setUp()
 {
     $configManager = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\Config\\ConfigManager')->disableOriginalConstructor()->getMock();
     $extendConfigProvider = new ConfigProviderMock($configManager, 'extend');
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'defaultField', 'int');
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'defaultDeletedField', 'int', ['is_deleted' => true]);
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'defaultToBeDeletedField', 'int', ['state' => ExtendScope::STATE_DELETE]);
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'many2oneRel', RelationType::MANY_TO_ONE);
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'one2manyRel', RelationType::ONE_TO_MANY);
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'many2manyRel', RelationType::MANY_TO_MANY);
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'one2manyRelWithoutDefault', RelationType::ONE_TO_MANY, ['without_default' => true]);
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'many2manyRelWithoutDefault', RelationType::MANY_TO_MANY, ['without_default' => true]);
     $this->validator = new DefaultRelationFieldValidator(new FieldNameValidationHelper($extendConfigProvider));
 }
 protected function setUp()
 {
     $configManager = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\Config\\ConfigManager')->disableOriginalConstructor()->getMock();
     $extendConfigProvider = new ConfigProviderMock($configManager, 'extend');
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'field' . ExtendHelper::ENUM_SNAPSHOT_SUFFIX, 'int');
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'deletedField' . ExtendHelper::ENUM_SNAPSHOT_SUFFIX, 'int', ['is_deleted' => true]);
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'toBeDeletedField' . ExtendHelper::ENUM_SNAPSHOT_SUFFIX, 'int', ['state' => ExtendScope::STATE_DELETE]);
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'multiEnumField', 'multiEnum');
     $extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, 'enumField', 'enum');
     $this->validator = new MultiEnumSnapshotFieldValidator(new FieldNameValidationHelper($extendConfigProvider));
 }
Example #6
0
 /**
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 protected function prepareRelationsWithReverseRelationsMarkedAsToBeDeleted()
 {
     $extendConfigProvider = new ConfigProviderMock($this->configManager, 'extend');
     $entityConfigProvider = new ConfigProviderMock($this->configManager, 'entity');
     $this->configManager->expects($this->any())->method('getProvider')->willReturnMap([['extend', $extendConfigProvider], ['entity', $entityConfigProvider]]);
     $selfRelations = ['manyToOne|Test\\SourceEntity|Test\\TargetEntity|rel_m_t_o' => ['field_id' => new FieldConfigId('extend', 'Test\\SourceEntity', 'rel_m_t_o', 'manyToOne'), 'owner' => true, 'target_entity' => 'Test\\TargetEntity', 'target_field_id' => new FieldConfigId('extend', 'Test\\TargetEntity', 'rev_rel_m_t_o', 'oneToMany')], 'oneToMany|Test\\SourceEntity|Test\\TargetEntity|rel_o_t_m' => ['field_id' => new FieldConfigId('extend', 'Test\\SourceEntity', 'rel_o_t_m', 'oneToMany'), 'owner' => false, 'target_entity' => 'Test\\TargetEntity', 'target_field_id' => new FieldConfigId('extend', 'Test\\TargetEntity', 'sourceentity_rel_o_t_m', 'manyToOne')], 'manyToMany|Test\\SourceEntity|Test\\TargetEntity|rel_m_t_m' => ['field_id' => new FieldConfigId('extend', 'Test\\SourceEntity', 'rel_m_t_m', 'manyToMany'), 'owner' => true, 'target_entity' => 'Test\\TargetEntity', 'target_field_id' => new FieldConfigId('extend', 'Test\\TargetEntity', 'sourceentity_rel_m_t_m', 'manyToMany')]];
     $targetRelations = ['manyToOne|Test\\SourceEntity|Test\\TargetEntity|rel_m_t_o' => ['field_id' => new FieldConfigId('extend', 'Test\\TargetEntity', 'rev_rel_m_t_o', 'oneToMany'), 'owner' => false, 'target_entity' => 'Test\\SourceEntity', 'target_field_id' => new FieldConfigId('extend', 'Test\\SourceEntity', 'rel_m_t_o', 'manyToOne')], 'oneToMany|Test\\SourceEntity|Test\\TargetEntity|rel_o_t_m' => ['field_id' => new FieldConfigId('extend', 'Test\\TargetEntity', 'sourceentity_rel_o_t_m', 'manyToOne'), 'owner' => true, 'target_entity' => 'Test\\SourceEntity', 'target_field_id' => new FieldConfigId('extend', 'Test\\SourceEntity', 'rel_o_t_m', 'oneToMany')], 'manyToMany|Test\\SourceEntity|Test\\TargetEntity|rel_m_t_m' => ['field_id' => new FieldConfigId('extend', 'Test\\TargetEntity', 'sourceentity_rel_m_t_m', 'manyToMany'), 'owner' => false, 'target_entity' => 'Test\\SourceEntity', 'target_field_id' => new FieldConfigId('extend', 'Test\\SourceEntity', 'rel_m_t_m', 'manyToMany')]];
     $extendConfigProvider->addEntityConfig('Test\\SourceEntity', ['relation' => $selfRelations]);
     $entityConfigProvider->addEntityConfig('Test\\SourceEntity', ['label' => 'Source Entity']);
     $extendConfigProvider->addFieldConfig('Test\\SourceEntity', 'rel_m_t_o', 'manyToOne', ['state' => ExtendScope::STATE_ACTIVE]);
     $entityConfigProvider->addFieldConfig('Test\\SourceEntity', 'rel_m_t_o', 'manyToOne', ['label' => 'Rel Many-To-One']);
     $extendConfigProvider->addFieldConfig('Test\\SourceEntity', 'rel_o_t_m', 'oneToMany', ['state' => ExtendScope::STATE_ACTIVE]);
     $entityConfigProvider->addFieldConfig('Test\\SourceEntity', 'rel_o_t_m', 'oneToMany', ['label' => 'Rel One-To-Many']);
     $extendConfigProvider->addFieldConfig('Test\\SourceEntity', 'rel_m_t_m', 'manyToMany', ['state' => ExtendScope::STATE_ACTIVE]);
     $entityConfigProvider->addFieldConfig('Test\\SourceEntity', 'rel_m_t_m', 'manyToMany', ['label' => 'Rel Many-To-Many']);
     $extendConfigProvider->addEntityConfig('Test\\TargetEntity', ['relation' => $targetRelations]);
     $entityConfigProvider->addEntityConfig('Test\\TargetEntity', ['label' => 'Target Entity']);
     $extendConfigProvider->addFieldConfig('Test\\TargetEntity', 'rev_rel_m_t_o', 'oneToMany', ['state' => ExtendScope::STATE_DELETE]);
     $entityConfigProvider->addFieldConfig('Test\\TargetEntity', 'rev_rel_m_t_o', 'oneToMany', ['label' => 'Reverse Rel Many-To-One']);
     $extendConfigProvider->addFieldConfig('Test\\TargetEntity', 'sourceentity_rel_o_t_m', 'oneToMany', ['state' => ExtendScope::STATE_DELETE]);
     $entityConfigProvider->addFieldConfig('Test\\TargetEntity', 'sourceentity_rel_o_t_m', 'oneToMany', ['label' => 'Rel One-To-Many']);
     $extendConfigProvider->addFieldConfig('Test\\TargetEntity', 'sourceentity_rel_m_t_m', 'manyToMany', ['state' => ExtendScope::STATE_DELETE]);
     $entityConfigProvider->addFieldConfig('Test\\TargetEntity', 'sourceentity_rel_m_t_m', 'manyToMany', ['label' => 'Rel Many-To-Many']);
 }
 /**
  * @SuppressWarnings(PHPMD.NPathComplexity)
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  *
  * @param array $config
  */
 protected function prepare($config)
 {
     $metadata = [];
     $fieldConfigs = [];
     foreach ($config as $entityClassName => $entityData) {
         $entityMetadata = $this->getMockBuilder('Doctrine\\ORM\\Mapping\\ClassMetadata')->disableOriginalConstructor()->getMock();
         $entityMetadata->expects($this->any())->method('getName')->will($this->returnValue($entityClassName));
         $metadata[$entityClassName] = $entityMetadata;
         $fieldNames = [];
         $fieldTypes = [];
         $fieldIdentifiers = [];
         $configs = [];
         foreach ($entityData['fields'] as $fieldName => $fieldData) {
             $fieldNames[] = $fieldName;
             $fieldTypes[] = [$fieldName, $fieldData['type']];
             $fieldIdentifiers[] = [$fieldName, isset($fieldData['identifier']) ? $fieldData['identifier'] : false];
             $configId = new FieldConfigId('extend', $entityClassName, $fieldName, $fieldData['type']);
             $configs[] = new Config($configId);
         }
         $fieldConfigs[$entityClassName] = $configs;
         $entityMetadata->expects($this->any())->method('getFieldNames')->will($this->returnValue($fieldNames));
         $entityMetadata->expects($this->any())->method('hasField')->willReturnCallback(function ($name) use($fieldNames) {
             return in_array($name, $fieldNames, true);
         });
         $entityMetadata->expects($this->any())->method('isIdentifier')->will($this->returnValueMap($fieldIdentifiers));
         $relNames = [];
         $mappings = [];
         if (isset($entityData['relations'])) {
             $relTargetClasses = [];
             foreach ($entityData['relations'] as $relName => $relData) {
                 $type = $relData['type'];
                 $relTargetClass = $relData['target_class'];
                 if ($type === 'ref-one') {
                     $mappings[$relName] = $relData;
                 }
                 $fieldTypes[] = [$relName, $type];
                 $relNames[] = $relName;
                 $relTargetClasses[] = [$relName, $relTargetClass];
             }
             $entityMetadata->expects($this->any())->method('getAssociationTargetClass')->will($this->returnValueMap($relTargetClasses));
             $entityMetadata->expects($this->any())->method('getAssociationMappedByTargetField')->will($this->returnValue('id'));
         }
         $entityMetadata->expects($this->any())->method('getAssociationNames')->will($this->returnValue($relNames));
         $entityMetadata->expects($this->any())->method('hasAssociation')->willReturnCallback(function ($name) use($relNames) {
             return in_array($name, $relNames, true);
         });
         if (isset($entityData['unidirectional_relations'])) {
             foreach ($entityData['unidirectional_relations'] as $relName => $relData) {
                 $fieldTypes[] = [$relName, $relData['type']];
                 $relData['fieldName'] = $relName;
                 $relData['isOwningSide'] = true;
                 $relData['inversedBy'] = null;
                 $relData['sourceEntity'] = $entityClassName;
                 unset($relData['config']);
                 $mappings[$relName] = $relData;
             }
             $entityMetadata->expects($this->any())->method('getAssociationMappings')->will($this->returnValue($mappings));
         }
         $entityMetadata->expects($this->any())->method('isSingleValuedAssociation')->will($this->returnCallback(function ($field) use($mappings) {
             return !empty($mappings[$field]);
         }));
         $entityMetadata->expects($this->any())->method('getTypeOfField')->will($this->returnValueMap($fieldTypes));
     }
     $em = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->getMock();
     $metadataFactory = $this->getMock('Doctrine\\ORM\\Mapping\\ClassMetadataFactory');
     $em->expects($this->any())->method('getMetadataFactory')->will($this->returnValue($metadataFactory));
     $metadataFactory->expects($this->any())->method('getMetadataFor')->will($this->returnCallback(function ($entityClassName) use(&$metadata) {
         return $metadata[$entityClassName];
     }));
     $this->doctrine->expects($this->any())->method('getManagerForClass')->with($this->isType('string'))->will($this->returnValue($em));
     foreach ($config as $entityClassName => $entityData) {
         if (isset($entityData['config'])) {
             $this->entityConfigProvider->addEntityConfig($entityClassName, $entityData['config']);
             $this->extendConfigProvider->addEntityConfig($entityClassName);
         }
         foreach (['fields', 'relations', 'unidirectional_relations'] as $fieldType) {
             if (isset($entityData[$fieldType])) {
                 foreach ($entityData[$fieldType] as $fieldName => $fieldData) {
                     if (isset($fieldData['config'])) {
                         $this->entityConfigProvider->addFieldConfig($entityClassName, $fieldName, $fieldData['type'], $fieldData['config']);
                         $this->extendConfigProvider->addFieldConfig($entityClassName, $fieldName, $fieldData['type']);
                     }
                 }
             }
         }
     }
 }
 /**
  * @param string $fieldName
  * @param string $fieldType
  * @param array  $values
  * @param bool   $hidden
  */
 protected function addFieldConfig($fieldName, $fieldType = null, $values = [], $hidden = false)
 {
     $this->extendConfigProvider->addFieldConfig(self::ENTITY_CLASS, $fieldName, $fieldType, $values, $hidden);
 }