diff --git a/tests/framework/db/ActiveQueryModelConnectionTest.php b/tests/framework/db/ActiveQueryModelConnectionTest.php new file mode 100644 index 0000000000..fdef6d55b2 --- /dev/null +++ b/tests/framework/db/ActiveQueryModelConnectionTest.php @@ -0,0 +1,78 @@ +globalConnection = $this->getMockBuilder('yii\db\Connection')->getMock(); + $this->modelConnection = $this->getMockBuilder('yii\db\Connection')->getMock(); + + $this->mockApplication([ + 'components' => [ + 'db' => $this->globalConnection + ] + ]); + + ActiveRecord::$db = $this->modelConnection; + } + + private function prepareConnectionMock($connection) + { + $command = $this->getMockBuilder('yii\db\Command')->getMock(); + $command->method('queryOne')->willReturn(false); + $connection->method('createCommand')->willReturn($command); + $builder = $this->getMockBuilder('yii\db\QueryBuilder')->disableOriginalConstructor()->getMock(); + $connection->expects($this->once())->method('getQueryBuilder')->willReturn($builder); + } + + public function testEnsureModelConnectionForOne() + { + $this->globalConnection->expects($this->never())->method('getQueryBuilder'); + $this->prepareConnectionMock($this->modelConnection); + + $query = new ActiveQuery(ActiveRecord::className()); + $query->one(); + } + + public function testEnsureGlobalConnectionForOne() + { + $this->modelConnection->expects($this->never())->method('getQueryBuilder'); + $this->prepareConnectionMock($this->globalConnection); + + $query = new ActiveQuery(DefaultActiveRecord::className()); + $query->one(); + } + + public function testEnsureModelConnectionForAll() + { + $this->globalConnection->expects($this->never())->method('getQueryBuilder'); + $this->prepareConnectionMock($this->modelConnection); + + $query = new ActiveQuery(ActiveRecord::className()); + $query->all(); + } + + public function testEnsureGlobalConnectionForAll() + { + $this->modelConnection->expects($this->never())->method('getQueryBuilder'); + $this->prepareConnectionMock($this->globalConnection); + + $query = new ActiveQuery(DefaultActiveRecord::className()); + $query->all(); + } +}