Fix #18472: Fix initializing db component configuration

This commit is contained in:
Bizley
2021-01-11 12:54:39 +01:00
committed by GitHub
parent e2f286e96d
commit f544883148
4 changed files with 17 additions and 7 deletions

View File

@ -88,9 +88,7 @@ class ActiveDataProvider extends BaseDataProvider
public function init() public function init()
{ {
parent::init(); parent::init();
if ($this->db !== null) { $this->db = Instance::ensure($this->db === null ? 'db' : $this->db, Connection::className());
$this->db = Instance::ensure($this->db, Connection::className());
}
} }
/** /**

View File

@ -8,6 +8,7 @@
namespace yiiunit\framework\data; namespace yiiunit\framework\data;
use yii\data\ActiveDataProvider; use yii\data\ActiveDataProvider;
use yii\db\Connection;
use yii\db\Query; use yii\db\Query;
use yiiunit\TestCase; use yiiunit\TestCase;
@ -19,15 +20,16 @@ class ActiveDataProviderCloningTest extends TestCase
public function testClone() public function testClone()
{ {
$queryFirst = new Query(); $queryFirst = new Query();
$dataProviderFirst = new ActiveDataProvider([ $dataProviderFirst = new ActiveDataProvider([
'db' => new Connection(),
'query' => $queryFirst 'query' => $queryFirst
]); ]);
$dataProviderSecond = clone $dataProviderFirst; $dataProviderSecond = clone $dataProviderFirst;
$querySecond = $dataProviderSecond->query; $querySecond = $dataProviderSecond->query;
$this->assertNotSame($querySecond, $queryFirst); $this->assertNotSame($querySecond, $queryFirst);
} }
} }

View File

@ -35,6 +35,7 @@ abstract class ActiveDataProviderTest extends DatabaseTestCase
public function testActiveQuery() public function testActiveQuery()
{ {
$provider = new ActiveDataProvider([ $provider = new ActiveDataProvider([
'db' => $this->getConnection(),
'query' => Order::find()->orderBy('id'), 'query' => Order::find()->orderBy('id'),
]); ]);
$orders = $provider->getModels(); $orders = $provider->getModels();
@ -45,6 +46,7 @@ abstract class ActiveDataProviderTest extends DatabaseTestCase
$this->assertEquals([1, 2, 3], $provider->getKeys()); $this->assertEquals([1, 2, 3], $provider->getKeys());
$provider = new ActiveDataProvider([ $provider = new ActiveDataProvider([
'db' => $this->getConnection(),
'query' => Order::find(), 'query' => Order::find(),
'pagination' => [ 'pagination' => [
'pageSize' => 2, 'pageSize' => 2,
@ -59,6 +61,7 @@ abstract class ActiveDataProviderTest extends DatabaseTestCase
/* @var $customer Customer */ /* @var $customer Customer */
$customer = Customer::findOne(2); $customer = Customer::findOne(2);
$provider = new ActiveDataProvider([ $provider = new ActiveDataProvider([
'db' => $this->getConnection(),
'query' => $customer->getOrders(), 'query' => $customer->getOrders(),
]); ]);
$orders = $provider->getModels(); $orders = $provider->getModels();
@ -68,6 +71,7 @@ abstract class ActiveDataProviderTest extends DatabaseTestCase
$this->assertEquals([2, 3], $provider->getKeys()); $this->assertEquals([2, 3], $provider->getKeys());
$provider = new ActiveDataProvider([ $provider = new ActiveDataProvider([
'db' => $this->getConnection(),
'query' => $customer->getOrders(), 'query' => $customer->getOrders(),
'pagination' => [ 'pagination' => [
'pageSize' => 1, 'pageSize' => 1,
@ -82,6 +86,7 @@ abstract class ActiveDataProviderTest extends DatabaseTestCase
/* @var $order Order */ /* @var $order Order */
$order = Order::findOne(2); $order = Order::findOne(2);
$provider = new ActiveDataProvider([ $provider = new ActiveDataProvider([
'db' => $this->getConnection(),
'query' => $order->getItems(), 'query' => $order->getItems(),
]); ]);
$items = $provider->getModels(); $items = $provider->getModels();
@ -92,6 +97,7 @@ abstract class ActiveDataProviderTest extends DatabaseTestCase
$this->assertEquals([3, 4, 5], $provider->getKeys()); $this->assertEquals([3, 4, 5], $provider->getKeys());
$provider = new ActiveDataProvider([ $provider = new ActiveDataProvider([
'db' => $this->getConnection(),
'query' => $order->getItems(), 'query' => $order->getItems(),
'pagination' => [ 'pagination' => [
'pageSize' => 2, 'pageSize' => 2,
@ -106,6 +112,7 @@ abstract class ActiveDataProviderTest extends DatabaseTestCase
/* @var $order Order */ /* @var $order Order */
$order = Order::findOne(1); $order = Order::findOne(1);
$provider = new ActiveDataProvider([ $provider = new ActiveDataProvider([
'db' => $this->getConnection(),
'query' => $order->getBooks(), 'query' => $order->getBooks(),
]); ]);
$items = $provider->getModels(); $items = $provider->getModels();
@ -114,6 +121,7 @@ abstract class ActiveDataProviderTest extends DatabaseTestCase
$this->assertInstanceOf(Item::className(), $items[1]); $this->assertInstanceOf(Item::className(), $items[1]);
$provider = new ActiveDataProvider([ $provider = new ActiveDataProvider([
'db' => $this->getConnection(),
'query' => $order->getBooks(), 'query' => $order->getBooks(),
'pagination' => [ 'pagination' => [
'pageSize' => 1, 'pageSize' => 1,

View File

@ -34,6 +34,7 @@ class LinkSorterTest extends DatabaseTestCase
public function testLabelsSimple() public function testLabelsSimple()
{ {
$dataProvider = new ActiveDataProvider([ $dataProvider = new ActiveDataProvider([
'db' => $this->getConnection(),
'query' => Order::find(), 'query' => Order::find(),
'models' => [new Order()], 'models' => [new Order()],
'totalCount' => 1, 'totalCount' => 1,
@ -58,6 +59,7 @@ class LinkSorterTest extends DatabaseTestCase
public function testLabelsExplicit() public function testLabelsExplicit()
{ {
$dataProvider = new ActiveDataProvider([ $dataProvider = new ActiveDataProvider([
'db' => $this->getConnection(),
'query' => Order::find(), 'query' => Order::find(),
'models' => [new Order()], 'models' => [new Order()],
'totalCount' => 1, 'totalCount' => 1,