Пример #1
0
 public function testGetMetadata()
 {
     $mockDriver = new MetadataDriverMock();
     $manager = $this->createModelManager($mockDriver);
     $classFactory = $manager->getMetadataFactory();
     $class = new ClassMetadata('TestMultiModel\\User');
     $class->addModel('entity', 'Entity\\User', array('name'));
     $class->addModel('document', 'Document\\User', array('profileContent'));
     $class->setIdentifier('document', 'id');
     $classFactory->setMetadataFor($class->getName(), $class);
     $class = $classFactory->getMetadataFor('TestMultiModel\\User');
     $this->assertTrue($class->hasIdentifier());
     $this->assertEquals(array('name', 'profileContent'), $class->getFieldNames());
 }
Пример #2
0
 public function test__construct()
 {
     $metadata = new ClassMetadata(__NAMESPACE__ . '\\ModelTest');
     $metadata->addModel('entity', __NAMESPACE__ . '\\EntityTest');
     $metadata->setIdentifier('entity', 'id');
     $metadataFactory = $this->getMock('Pok\\PoolDBM\\Mapping\\ClassMetadataFactory', array('getMetadataFor', 'setModelManager'));
     $metadataFactory->expects($this->any())->method('getMetadataFor')->will($this->returnValue($metadata));
     $refl = new \ReflectionClass('Pok\\PoolDBM\\Manager\\BaseManager');
     $this->assertTrue($refl->isInstantiable());
     $pool = new Pool();
     $pool->addManager('entity', new EntityManager());
     $manager = new TestManager(__NAMESPACE__ . '\\ModelTest', new ModelManager($pool, $metadataFactory));
     $this->assertInstanceOf('Pok\\PoolDBM\\ModelRepository', $manager->getRepository($manager));
     $this->assertInstanceOf(__NAMESPACE__ . '\\ModelTest', $manager->create());
     $manager->save(new ModelTest());
     $manager->save(new ModelTest(), true);
     try {
         $manager->save(new \stdClass());
     } catch (\RuntimeException $e) {
         $this->assertEquals('Manager "Pok\\PoolDBM\\Tests\\Manager\\TestManager" is unable to save model "stdClass"', $e->getMessage());
     }
     $manager->clear();
     $this->assertInstanceOf(__NAMESPACE__ . '\\ModelTest', $manager->find(null));
     $this->assertEquals(1, count($manager->findBy(array())));
     $this->assertInstanceOf(__NAMESPACE__ . '\\ModelTest', $manager->findOneBy(array()));
     $this->assertEquals(1, count($manager->findAll()));
 }
Пример #3
0
 /**
  * @param ClassMetadataInfo $class
  * @param \SimpleXMLElement $model
  *
  * @throws \InvalidArgumentException When the definition cannot be parsed
  */
 protected function addModel(ClassMetadataInfo $class, \SimpleXMLElement $model)
 {
     $fields = array();
     foreach ($model as $field) {
         /** @var \SimpleXMLElement $field */
         if ('field' === $field->getName()) {
             $fields[] = (string) $field['name'];
         } else {
             throw new \InvalidArgumentException(sprintf('Unable to parse tag "%s"', $field->getName()));
         }
     }
     $class->addModel((string) $model['manager'], (string) $model['name'], $fields, isset($model['repository-method']) ? (string) $model['repository-method'] : null);
 }