You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							119 lines
						
					
					
						
							3.6 KiB
						
					
					
				
			
		
		
	
	
							119 lines
						
					
					
						
							3.6 KiB
						
					
					
				<?php | 
						|
 | 
						|
namespace yiiunit\extensions\mongodb; | 
						|
 | 
						|
use yii\mongodb\Collection; | 
						|
use yii\mongodb\file\Collection as FileCollection; | 
						|
use yii\mongodb\Connection; | 
						|
use yii\mongodb\Database; | 
						|
 | 
						|
/** | 
						|
 * @group mongo | 
						|
 */ | 
						|
class ConnectionTest extends MongoDbTestCase | 
						|
{ | 
						|
	public function testConstruct() | 
						|
	{ | 
						|
		$connection = $this->getConnection(false); | 
						|
		$params = $this->mongoDbConfig; | 
						|
 | 
						|
		$connection->open(); | 
						|
 | 
						|
		$this->assertEquals($params['dsn'], $connection->dsn); | 
						|
		$this->assertEquals($params['defaultDatabaseName'], $connection->defaultDatabaseName); | 
						|
		$this->assertEquals($params['options'], $connection->options); | 
						|
	} | 
						|
 | 
						|
	public function testOpenClose() | 
						|
	{ | 
						|
		$connection = $this->getConnection(false, false); | 
						|
 | 
						|
		$this->assertFalse($connection->isActive); | 
						|
		$this->assertEquals(null, $connection->mongoClient); | 
						|
 | 
						|
		$connection->open(); | 
						|
		$this->assertTrue($connection->isActive); | 
						|
		$this->assertTrue(is_object($connection->mongoClient)); | 
						|
 | 
						|
		$connection->close(); | 
						|
		$this->assertFalse($connection->isActive); | 
						|
		$this->assertEquals(null, $connection->mongoClient); | 
						|
 | 
						|
		$connection = new Connection; | 
						|
		$connection->dsn = 'unknown::memory:'; | 
						|
		$this->setExpectedException('yii\mongodb\Exception'); | 
						|
		$connection->open(); | 
						|
	} | 
						|
 | 
						|
	public function testGetDatabase() | 
						|
	{ | 
						|
		$connection = $this->getConnection(); | 
						|
 | 
						|
		$database = $connection->getDatabase($connection->defaultDatabaseName); | 
						|
		$this->assertTrue($database instanceof Database); | 
						|
		$this->assertTrue($database->mongoDb instanceof \MongoDB); | 
						|
 | 
						|
		$database2 = $connection->getDatabase($connection->defaultDatabaseName); | 
						|
		$this->assertTrue($database === $database2); | 
						|
 | 
						|
		$databaseRefreshed = $connection->getDatabase($connection->defaultDatabaseName, true); | 
						|
		$this->assertFalse($database === $databaseRefreshed); | 
						|
	} | 
						|
 | 
						|
	/** | 
						|
	 * @depends testGetDatabase | 
						|
	 */ | 
						|
	public function testGetDefaultDatabase() | 
						|
	{ | 
						|
		$connection = new Connection(); | 
						|
		$connection->dsn = $this->mongoDbConfig['dsn']; | 
						|
		$connection->defaultDatabaseName = $this->mongoDbConfig['defaultDatabaseName']; | 
						|
		$database = $connection->getDatabase(); | 
						|
		$this->assertTrue($database instanceof Database, 'Unable to get default database!'); | 
						|
 | 
						|
		$connection = new Connection(); | 
						|
		$connection->dsn = $this->mongoDbConfig['dsn']; | 
						|
		$connection->options = ['db' => $this->mongoDbConfig['defaultDatabaseName']]; | 
						|
		$database = $connection->getDatabase(); | 
						|
		$this->assertTrue($database instanceof Database, 'Unable to determine default database from options!'); | 
						|
 | 
						|
		$connection = new Connection(); | 
						|
		$connection->dsn = $this->mongoDbConfig['dsn'] . '/' . $this->mongoDbConfig['defaultDatabaseName']; | 
						|
		$database = $connection->getDatabase(); | 
						|
		$this->assertTrue($database instanceof Database, 'Unable to determine default database from dsn!'); | 
						|
	} | 
						|
 | 
						|
	/** | 
						|
	 * @depends testGetDefaultDatabase | 
						|
	 */ | 
						|
	public function testGetCollection() | 
						|
	{ | 
						|
		$connection = $this->getConnection(); | 
						|
 | 
						|
		$collection = $connection->getCollection('customer'); | 
						|
		$this->assertTrue($collection instanceof Collection); | 
						|
 | 
						|
		$collection2 = $connection->getCollection('customer'); | 
						|
		$this->assertTrue($collection === $collection2); | 
						|
 | 
						|
		$collection2 = $connection->getCollection('customer', true); | 
						|
		$this->assertFalse($collection === $collection2); | 
						|
	} | 
						|
 | 
						|
	/** | 
						|
	 * @depends testGetDefaultDatabase | 
						|
	 */ | 
						|
	public function testGetFileCollection() | 
						|
	{ | 
						|
		$connection = $this->getConnection(); | 
						|
 | 
						|
		$collection = $connection->getFileCollection('testfs'); | 
						|
		$this->assertTrue($collection instanceof FileCollection); | 
						|
 | 
						|
		$collection2 = $connection->getFileCollection('testfs'); | 
						|
		$this->assertTrue($collection === $collection2); | 
						|
 | 
						|
		$collection2 = $connection->getFileCollection('testfs', true); | 
						|
		$this->assertFalse($collection === $collection2); | 
						|
	} | 
						|
} |