/**
  * @return \Doctrine\Common\EventManager
  */
 protected function getEntityManager()
 {
     $evm = new EventManager();
     $this->_translatableListener = new TranslatableListener();
     $evm->addEventSubscriber($this->_translatableListener);
     $this->_filesystem1 = new Filesystem(new Local(FILESYSTEM1));
     $this->_filesystem2 = new Filesystem(new Local(FILESYSTEM2));
     $handler = new FileHandler\ChainHandler(array(new FileHandler\GaufretteHandler(), new FileHandler\SplFileInfoHandler()));
     $keymaker = new Entity();
     $this->_uploadableListener = new UploadableListener(array('one' => $this->_filesystem1, 'two' => $this->_filesystem2), $handler);
     $this->_uploadableListener->setDefaultFilesystem($this->_filesystem1);
     $this->_uploadableListener->setDefaultKeymaker($keymaker);
     $evm->addEventSubscriber($this->_uploadableListener);
     $connectionParams = array('driver' => 'pdo_sqlite', 'memory' => true);
     $config = $this->getMockAnnotatedConfig();
     $conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config, $evm);
     $em = EntityManager::create($conn, $config, $evm);
     $schema = array_map(function ($class) use($em) {
         return $em->getClassMetadata($class);
     }, (array) $this->getUsedEntityFixtures());
     $schemaTool = new SchemaTool($em);
     $schemaTool->dropSchema($schema);
     $schemaTool->updateSchema($schema, true);
     return $em;
 }
 /**
  * @param \Doctrine\Common\Persistence\ObjectManager $objectManager
  * @param string $class
  * @return \FSi\DoctrineExtensions\Uploadable\Mapping\ClassMetadata
  */
 public function getExtendedMetadata(ObjectManager $objectManager, $class)
 {
     /* @var $metadata \FSi\DoctrineExtensions\Uploadable\Mapping\ClassMetadata */
     $metadata = parent::getExtendedMetadata($objectManager, $class);
     $class = ltrim($class, '\\');
     if (array_key_exists($class, $this->configuration)) {
         $properties = $metadata->getUploadableProperties();
         foreach ($this->configuration as $property => $configuration) {
             if (array_key_exists($property, $properties)) {
                 if (isset($configuration['filesystem'])) {
                     $properties[$property]['filesystem'] = $configuration['filesystem'];
                 }
                 if (isset($configuration['keymaker'])) {
                     $properties[$property]['keymaker'] = $configuration['keymaker'];
                 }
                 if (isset($configuration['keyPattern'])) {
                     $properties[$property]['keyPattern'] = $configuration['keyPattern'];
                 }
             }
         }
         foreach ($properties as $property => $configuration) {
             $metadata->addUploadableProperty($property, $properties[$property]['targetField'], $properties[$property]['filesystem'], $properties[$property]['keymaker'], $properties[$property]['keyLength'], $properties[$property]['keyPattern']);
         }
     }
     return $metadata;
 }
 public function testSettingAndRemovingSingleFilesystem()
 {
     $f1 = $this->getFilesystemMock();
     $f2 = $this->getFilesystemMock();
     $listener = new UploadableListener(array(), $this->getFileHandlerMock());
     $listener->setFilesystem('one', $f1);
     $this->assertTrue($listener->hasFilesystem('one'));
     $this->assertSame($f1, $listener->getFilesystem('one'));
     $listener->setFilesystem('two', $f2);
     $this->assertTrue($listener->hasFilesystem('two'));
     $this->assertSame($f2, $listener->getFilesystem('two'));
     $listener->removeFilesystem('one');
     $this->assertFalse($listener->hasFilesystem('one'));
     $listener->removeFilesystem('two');
     $this->assertFalse($listener->hasFilesystem('two'));
     $this->assertEquals(0, count($listener->getFilesystems()));
 }