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)); }
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)); }
/** * @param array $values * @param string $type * @param string $className * @param string $fieldName * * @return Config */ protected function addConfigNewField($values = [], $type = 'string', $className = 'Test\\SourceEntity', $fieldName = 'testField') { $resultValues = ['owner' => ExtendScope::OWNER_CUSTOM, 'state' => ExtendScope::STATE_NEW, 'is_deleted' => false]; if (!empty($values)) { $resultValues = array_merge($resultValues, $values); } return $this->extendConfigProvider->addFieldConfig($className, $fieldName, $type, $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)); }
/** * @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); }