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())); }
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()); }
/** * @param ClassMetadataInfo $class * @param \SimpleXMLElement $reference */ protected function setModelReference(ClassMetadataInfo $class, \SimpleXMLElement $reference) { $parameters = $reference->attributes(); $class->setIdentifier((string) $parameters['manager'], (string) $parameters['field']); foreach ($reference as $element) { foreach ($element as $config) { /** @var \SimpleXMLElement $config */ switch ($config->getName()) { case 'reference': $class->addIdentifierReference((string) $config['manager'], isset($config['reference-field']) ? (string) $config['reference-field'] : (string) $parameters['field'], (string) $config['field']); break; case 'id-generator': $class->setManagerReferenceGenerator((string) $config['target-manager']); break; } } } }