markTestSkipped('Missing Mongo extension.'); } } /** * {@inheritdoc} */ protected function tearDown() { if ($this->dm) { foreach ($this->dm->getDocumentDatabases() as $db) { foreach ($db->listCollections() as $collection) { $collection->drop(); } } $this->dm->getConnection()->close(); $this->dm = null; } } /** * DocumentManager mock object together with * annotation mapping driver and database * * @param EventManager $evm * @return DocumentManager */ protected function getMockDocumentManager(EventManager $evm = null) { $conn = new Connection; $config = $this->getMockAnnotatedConfig(); try { $this->dm = DocumentManager::create($conn, $config, $evm ?: $this->getEventManager()); $this->dm->getConnection()->connect(); } catch (\MongoException $e) { $this->markTestSkipped('Doctrine MongoDB ODM failed to connect'); } return $this->dm; } /** * DocumentManager mock object with * annotation mapping driver * * @param EventManager $evm * @return DocumentManager */ protected function getMockMappedDocumentManager(EventManager $evm = null) { $conn = $this->getMock('Doctrine\\MongoDB\\Connection'); $config = $this->getMockAnnotatedConfig(); $this->dm = DocumentManager::create($conn, $config, $evm ?: $this->getEventManager()); return $this->dm; } /** * Creates default mapping driver * * @return \Doctrine\ORM\Mapping\Driver\Driver */ protected function getMetadataDriverImplementation() { return new AnnotationDriver($_ENV['annotation_reader']); } /** * Build event manager * * @return EventManager */ private function getEventManager() { $evm = new EventManager; return $evm; } /** * Get annotation mapping configuration * * @return Doctrine\ORM\Configuration */ private function getMockAnnotatedConfig() { $config = $this->getMock('Doctrine\\ODM\\MongoDB\\Configuration'); $config->expects($this->once()) ->method('getProxyDir') ->will($this->returnValue(__DIR__.'/../../temp')); $config->expects($this->once()) ->method('getProxyNamespace') ->will($this->returnValue('Proxy')); $config->expects($this->once()) ->method('getHydratorDir') ->will($this->returnValue(__DIR__.'/../../temp')); $config->expects($this->once()) ->method('getHydratorNamespace') ->will($this->returnValue('Hydrator')); $config->expects($this->any()) ->method('getDefaultDB') ->will($this->returnValue('knp_pager_tests')); $config->expects($this->once()) ->method('getAutoGenerateProxyClasses') ->will($this->returnValue(true)); $config->expects($this->once()) ->method('getAutoGenerateHydratorClasses') ->will($this->returnValue(true)); $config->expects($this->once()) ->method('getClassMetadataFactoryName') ->will($this->returnValue('Doctrine\\ODM\\MongoDB\\Mapping\\ClassMetadataFactory')); $config->expects($this->any()) ->method('getMongoCmd') ->will($this->returnValue('$')); $config ->expects($this->any()) ->method('getDefaultCommitOptions') ->will($this->returnValue(array('safe' => true))) ; $mappingDriver = $this->getMetadataDriverImplementation(); $config->expects($this->any()) ->method('getMetadataDriverImpl') ->will($this->returnValue($mappingDriver)); return $config; } }