public function testMerge()
 {
     $newMetadata = new EntityMetadata(DemoEntity::ENTITY_NAME);
     $newMetadata->mode = ConfigModelManager::MODE_READONLY;
     $this->classMetadata->merge($newMetadata);
     $this->assertEquals(ConfigModelManager::MODE_READONLY, $this->classMetadata->mode);
 }
Esempio n. 2
0
 /**
  * {@inheritdoc}
  */
 public function loadMetadataForClass(\ReflectionClass $class)
 {
     /** @var Config $annotation */
     if ($annotation = $this->reader->getClassAnnotation($class, self::ENTITY_CONFIG)) {
         $metadata = new EntityMetadata($class->getName());
         $metadata->configurable = true;
         $metadata->defaultValues = $annotation->defaultValues;
         $metadata->routeName = $annotation->routeName;
         $metadata->routeView = $annotation->routeView;
         $metadata->mode = $annotation->mode;
         foreach ($class->getProperties() as $property) {
             $propertyMetadata = new FieldMetadata($class->getName(), $property->getName());
             /** @var ConfigField $annotation */
             if ($annotation = $this->reader->getPropertyAnnotation($property, self::FIELD_CONFIG)) {
                 $propertyMetadata->defaultValues = $annotation->defaultValues;
                 $propertyMetadata->mode = $annotation->mode;
             }
             $metadata->addPropertyMetadata($propertyMetadata);
         }
         return $metadata;
     }
     return null;
 }
Esempio n. 3
0
 public function testUpdateConfigFieldModelWithForceForCustomField()
 {
     $configId = new FieldConfigId('entity', self::ENTITY_CLASS, 'id', 'int');
     $metadata = new EntityMetadata(self::ENTITY_CLASS);
     $idFieldMetadata = new FieldMetadata(self::ENTITY_CLASS, 'id');
     $metadata->addPropertyMetadata($idFieldMetadata);
     $idFieldMetadata->defaultValues['entity'] = ['translatable1' => 'labelVal1', 'other1' => 'otherVal1', 'translatable2' => 'labelVal2', 'other2' => 'otherVal2'];
     $this->metadataFactory->expects($this->once())->method('getMetadataForClass')->with(self::ENTITY_CLASS)->will($this->returnValue($metadata));
     $propertyConfigContainer = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\Provider\\PropertyConfigContainer')->disableOriginalConstructor()->getMock();
     $propertyConfigContainer->expects($this->once())->method('getDefaultValues')->with(PropertyConfigContainer::TYPE_FIELD, 'int')->will($this->returnValue(['translatable10' => 'labelVal10', 'other10' => 'otherVal10']));
     $propertyConfigContainer->expects($this->once())->method('getTranslatableValues')->with(PropertyConfigContainer::TYPE_FIELD)->will($this->returnValue(['translatable1', 'translatable2', 'translatable10', 'auto_generated']));
     $this->configProvider->expects($this->any())->method('getPropertyConfig')->will($this->returnValue($propertyConfigContainer));
     $config = new Config($configId);
     $config->set('translatable2', 'labelVal2_old');
     $config->set('other2', 'otherVal2_old');
     $this->configProvider->expects($this->once())->method('getConfig')->with(self::ENTITY_CLASS)->will($this->returnValue($config));
     $extendConfig = new Config(new FieldConfigId('extend', self::ENTITY_CLASS, 'id'));
     $extendConfig->set('owner', ExtendScope::OWNER_CUSTOM);
     $extendConfigProvider = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\Provider\\ConfigProvider')->disableOriginalConstructor()->getMock();
     $extendConfigProvider->expects($this->any())->method('getScope')->will($this->returnValue('extend'));
     $this->configProviderBag->addProvider($extendConfigProvider);
     $extendConfigProvider->expects($this->once())->method('hasConfig')->with(self::ENTITY_CLASS, 'id')->will($this->returnValue(true));
     $extendConfigProvider->expects($this->exactly(2))->method('getConfig')->with(self::ENTITY_CLASS, 'id')->will($this->returnValue($extendConfig));
     $extendPropertyConfigContainer = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\Provider\\PropertyConfigContainer')->disableOriginalConstructor()->getMock();
     $extendPropertyConfigContainer->expects($this->once())->method('getDefaultValues')->with(PropertyConfigContainer::TYPE_FIELD)->will($this->returnValue(['owner' => ExtendScope::OWNER_SYSTEM]));
     $extendPropertyConfigContainer->expects($this->once())->method('getTranslatableValues')->with(PropertyConfigContainer::TYPE_FIELD)->will($this->returnValue([]));
     $extendConfigProvider->expects($this->any())->method('getPropertyConfig')->will($this->returnValue($extendPropertyConfigContainer));
     $extendConfigProvider->expects($this->never())->method('persist');
     $expectedConfig = new Config($configId);
     $expectedConfig->set('translatable2', 'labelVal2_old');
     $expectedConfig->set('other2', 'otherVal2_old');
     $expectedConfig->set('translatable10', 'labelVal10');
     $expectedConfig->set('other10', 'otherVal10');
     $expectedConfig->set('translatable1', 'labelVal1');
     $expectedConfig->set('other1', 'otherVal1');
     $expectedConfig->set('auto_generated', 'oro.entityconfig.tests.unit.fixture.demoentity.id.auto_generated');
     $actualConfig = null;
     $this->configProvider->expects($this->once())->method('persist')->will($this->returnCallback(function ($c) use(&$actualConfig) {
         $actualConfig = $c;
     }));
     $this->configManager->updateConfigFieldModel(self::ENTITY_CLASS, 'id', true);
     $this->assertEquals($expectedConfig, $actualConfig);
 }
Esempio n. 4
0
 /**
  * @expectedException \LogicException
  * @expectedExceptionMessage No route "view" found for entity
  */
 public function testGetRouteThrowExceptionInStrictMode()
 {
     $metadata = new EntityMetadata('Oro\\Bundle\\EntityConfigBundle\\Tests\\Unit\\Fixture\\DemoEntity');
     $this->assertEquals('oro_demoentity_view', $metadata->getRoute('view', true));
 }