diff --git a/extensions/mongo/Connection.php b/extensions/mongo/Connection.php index ff8093d..5ee3d40 100644 --- a/extensions/mongo/Connection.php +++ b/extensions/mongo/Connection.php @@ -15,6 +15,8 @@ use Yii; /** * Class Connection * + * @property boolean $isActive Whether the Mongo connection is established. This property is read-only. + * * @author Paul Klimov * @since 2.0 */ @@ -50,6 +52,15 @@ class Connection extends Component public $dbName; /** + * Returns a value indicating whether the Mongo connection is established. + * @return boolean whether the Mongo connection is established + */ + public function getIsActive() + { + return is_object($this->client) && $this->client->connected; + } + + /** * Establishes a Mongo connection. * It does nothing if a Mongo connection has already been established. * @throws Exception if connection fails diff --git a/tests/unit/extensions/mongo/ConnectionTest.php b/tests/unit/extensions/mongo/ConnectionTest.php index a5b246a..f6a47f0 100644 --- a/tests/unit/extensions/mongo/ConnectionTest.php +++ b/tests/unit/extensions/mongo/ConnectionTest.php @@ -3,6 +3,8 @@ namespace yiiunit\extensions\mongo; +use yii\mongo\Connection; + class ConnectionTest extends MongoTestCase { public function testConstruct() @@ -13,7 +15,28 @@ class ConnectionTest extends MongoTestCase $connection->open(); $this->assertEquals($params['dsn'], $connection->dsn); - //$this->assertEquals($params['username'], $connection->username); - //$this->assertEquals($params['password'], $connection->password); + $this->assertEquals($params['dbName'], $connection->dbName); + $this->assertEquals($params['options'], $connection->options); + } + + public function testOpenClose() + { + $connection = $this->getConnection(false, false); + + $this->assertFalse($connection->isActive); + $this->assertEquals(null, $connection->client); + + $connection->open(); + $this->assertTrue($connection->isActive); + $this->assertTrue(is_object($connection->client)); + + $connection->close(); + $this->assertFalse($connection->isActive); + $this->assertEquals(null, $connection->client); + + $connection = new Connection; + $connection->dsn = 'unknown::memory:'; + $this->setExpectedException('yii\db\Exception'); + $connection->open(); } } \ No newline at end of file