ConnectionTest.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <?php
  2. namespace yiiunit\extensions\mongodb;
  3. use yii\mongodb\Collection;
  4. use yii\mongodb\Command;
  5. use yii\mongodb\file\Collection as FileCollection;
  6. use yii\mongodb\Connection;
  7. use yii\mongodb\Database;
  8. use yii\mongodb\QueryBuilder;
  9. class ConnectionTest extends TestCase
  10. {
  11. public function testConstruct()
  12. {
  13. $connection = $this->getConnection(false);
  14. $params = $this->mongoDbConfig;
  15. $connection->open();
  16. $this->assertEquals($params['dsn'], $connection->dsn);
  17. $this->assertEquals($params['options'], $connection->options);
  18. $this->assertEquals($params['driverOptions'], $connection->driverOptions);
  19. }
  20. public function testOpenClose()
  21. {
  22. $connection = $this->getConnection(false, false);
  23. $this->assertFalse($connection->isActive);
  24. $this->assertEquals(null, $connection->manager);
  25. $connection->open();
  26. $this->assertTrue($connection->isActive);
  27. $this->assertTrue(is_object($connection->manager));
  28. $connection->close();
  29. $this->assertFalse($connection->isActive);
  30. $this->assertEquals(null, $connection->manager);
  31. $connection = new Connection();
  32. $connection->dsn = 'unknown::memory:';
  33. $this->expectException('yii\mongodb\Exception');
  34. $connection->open();
  35. }
  36. public function testGetDatabase()
  37. {
  38. $connection = $this->getConnection();
  39. $database = $connection->getDatabase($connection->defaultDatabaseName);
  40. $this->assertTrue($database instanceof Database);
  41. $this->assertSame($connection, $database->connection);
  42. $this->assertSame($connection->defaultDatabaseName, $database->name);
  43. $database2 = $connection->getDatabase($connection->defaultDatabaseName);
  44. $this->assertTrue($database === $database2);
  45. $databaseRefreshed = $connection->getDatabase($connection->defaultDatabaseName, true);
  46. $this->assertFalse($database === $databaseRefreshed);
  47. }
  48. /**
  49. * Data provider for [[testFetchDefaultDatabaseName()]]
  50. * @return array test data
  51. */
  52. public function dataProviderFetchDefaultDatabaseName()
  53. {
  54. return [
  55. [
  56. 'mongodb://travis:test@localhost:27017/dbname',
  57. 'dbname',
  58. ],
  59. [
  60. 'mongodb://travis:test@localhost:27017/dbname?replicaSet=test&connectTimeoutMS=300000',
  61. 'dbname',
  62. ],
  63. ];
  64. }
  65. /**
  66. * @dataProvider dataProviderFetchDefaultDatabaseName
  67. *
  68. * @param string $dsn
  69. * @param string $databaseName
  70. */
  71. public function testGetDefaultDatabaseName($dsn, $databaseName)
  72. {
  73. $connection = new Connection();
  74. $connection->dsn = $dsn;
  75. $connection->getDefaultDatabaseName();
  76. $this->assertEquals($databaseName, $connection->getDefaultDatabaseName());
  77. }
  78. /**
  79. * @depends testGetDatabase
  80. */
  81. public function testGetDefaultDatabase()
  82. {
  83. $connection = new Connection();
  84. $connection->dsn = $this->mongoDbConfig['dsn'];
  85. $database = $connection->getDatabase();
  86. $this->assertTrue($database instanceof Database, 'Unable to determine default database from dsn!');
  87. }
  88. /**
  89. * @depends testGetDefaultDatabase
  90. */
  91. public function testGetCollection()
  92. {
  93. $connection = $this->getConnection();
  94. $collection = $connection->getCollection('customer');
  95. $this->assertTrue($collection instanceof Collection);
  96. $collection2 = $connection->getCollection('customer');
  97. $this->assertTrue($collection === $collection2);
  98. $collection2 = $connection->getCollection('customer', true);
  99. $this->assertFalse($collection === $collection2);
  100. }
  101. /**
  102. * @depends testGetDefaultDatabase
  103. */
  104. public function testGetFileCollection()
  105. {
  106. $connection = $this->getConnection();
  107. $collection = $connection->getFileCollection('testfs');
  108. $this->assertTrue($collection instanceof FileCollection);
  109. $collection2 = $connection->getFileCollection('testfs');
  110. $this->assertTrue($collection === $collection2);
  111. $collection2 = $connection->getFileCollection('testfs', true);
  112. $this->assertFalse($collection === $collection2);
  113. }
  114. public function testGetQueryBuilder()
  115. {
  116. $connection = $this->getConnection();
  117. $this->assertTrue($connection->getQueryBuilder() instanceof QueryBuilder);
  118. }
  119. public function testCreateCommand()
  120. {
  121. $connection = $this->getConnection();
  122. $command = $connection->createCommand();
  123. $this->assertTrue($command instanceof Command);
  124. $this->assertSame($connection, $command->db);
  125. }
  126. }