|
|
@ -10,6 +10,8 @@ namespace yiiunit\framework\data; |
|
|
|
use yii\data\ActiveDataProvider; |
|
|
|
use yii\data\ActiveDataProvider; |
|
|
|
use yii\db\Query; |
|
|
|
use yii\db\Query; |
|
|
|
use yiiunit\data\ar\ActiveRecord; |
|
|
|
use yiiunit\data\ar\ActiveRecord; |
|
|
|
|
|
|
|
use yiiunit\data\ar\Customer; |
|
|
|
|
|
|
|
use yiiunit\data\ar\Item; |
|
|
|
use yiiunit\framework\db\DatabaseTestCase; |
|
|
|
use yiiunit\framework\db\DatabaseTestCase; |
|
|
|
use yiiunit\data\ar\Order; |
|
|
|
use yiiunit\data\ar\Order; |
|
|
|
|
|
|
|
|
|
|
@ -18,6 +20,7 @@ use yiiunit\data\ar\Order; |
|
|
|
* @since 2.0 |
|
|
|
* @since 2.0 |
|
|
|
* |
|
|
|
* |
|
|
|
* @group data |
|
|
|
* @group data |
|
|
|
|
|
|
|
* @group db |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
class ActiveDataProviderTest extends DatabaseTestCase |
|
|
|
class ActiveDataProviderTest extends DatabaseTestCase |
|
|
|
{ |
|
|
|
{ |
|
|
@ -35,6 +38,8 @@ class ActiveDataProviderTest extends DatabaseTestCase |
|
|
|
$orders = $provider->getModels(); |
|
|
|
$orders = $provider->getModels(); |
|
|
|
$this->assertEquals(3, count($orders)); |
|
|
|
$this->assertEquals(3, count($orders)); |
|
|
|
$this->assertTrue($orders[0] instanceof Order); |
|
|
|
$this->assertTrue($orders[0] instanceof Order); |
|
|
|
|
|
|
|
$this->assertTrue($orders[1] instanceof Order); |
|
|
|
|
|
|
|
$this->assertTrue($orders[2] instanceof Order); |
|
|
|
$this->assertEquals([1, 2, 3], $provider->getKeys()); |
|
|
|
$this->assertEquals([1, 2, 3], $provider->getKeys()); |
|
|
|
|
|
|
|
|
|
|
|
$provider = new ActiveDataProvider([ |
|
|
|
$provider = new ActiveDataProvider([ |
|
|
@ -47,6 +52,75 @@ class ActiveDataProviderTest extends DatabaseTestCase |
|
|
|
$this->assertEquals(2, count($orders)); |
|
|
|
$this->assertEquals(2, count($orders)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function testActiveRelation() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
/** @var Customer $customer */ |
|
|
|
|
|
|
|
$customer = Customer::find(2); |
|
|
|
|
|
|
|
$provider = new ActiveDataProvider([ |
|
|
|
|
|
|
|
'query' => $customer->getOrders(), |
|
|
|
|
|
|
|
]); |
|
|
|
|
|
|
|
$orders = $provider->getModels(); |
|
|
|
|
|
|
|
$this->assertEquals(2, count($orders)); |
|
|
|
|
|
|
|
$this->assertTrue($orders[0] instanceof Order); |
|
|
|
|
|
|
|
$this->assertTrue($orders[1] instanceof Order); |
|
|
|
|
|
|
|
$this->assertEquals([2, 3], $provider->getKeys()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$provider = new ActiveDataProvider([ |
|
|
|
|
|
|
|
'query' => $customer->getOrders(), |
|
|
|
|
|
|
|
'pagination' => [ |
|
|
|
|
|
|
|
'pageSize' => 1, |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
]); |
|
|
|
|
|
|
|
$orders = $provider->getModels(); |
|
|
|
|
|
|
|
$this->assertEquals(1, count($orders)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function testActiveRelationVia() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
/** @var Order $order */ |
|
|
|
|
|
|
|
$order = Order::find(2); |
|
|
|
|
|
|
|
$provider = new ActiveDataProvider([ |
|
|
|
|
|
|
|
'query' => $order->getItems(), |
|
|
|
|
|
|
|
]); |
|
|
|
|
|
|
|
$items = $provider->getModels(); |
|
|
|
|
|
|
|
$this->assertEquals(3, count($items)); |
|
|
|
|
|
|
|
$this->assertTrue($items[0] instanceof Item); |
|
|
|
|
|
|
|
$this->assertTrue($items[1] instanceof Item); |
|
|
|
|
|
|
|
$this->assertTrue($items[2] instanceof Item); |
|
|
|
|
|
|
|
$this->assertEquals([3, 4, 5], $provider->getKeys()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$provider = new ActiveDataProvider([ |
|
|
|
|
|
|
|
'query' => $order->getItems(), |
|
|
|
|
|
|
|
'pagination' => [ |
|
|
|
|
|
|
|
'pageSize' => 2, |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
]); |
|
|
|
|
|
|
|
$items = $provider->getModels(); |
|
|
|
|
|
|
|
$this->assertEquals(2, count($items)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function testActiveRelationViaTable() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
/** @var Order $order */ |
|
|
|
|
|
|
|
$order = Order::find(1); |
|
|
|
|
|
|
|
$provider = new ActiveDataProvider([ |
|
|
|
|
|
|
|
'query' => $order->getBooks(), |
|
|
|
|
|
|
|
]); |
|
|
|
|
|
|
|
$items = $provider->getModels(); |
|
|
|
|
|
|
|
$this->assertEquals(2, count($items)); |
|
|
|
|
|
|
|
$this->assertTrue($items[0] instanceof Item); |
|
|
|
|
|
|
|
$this->assertTrue($items[1] instanceof Item); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$provider = new ActiveDataProvider([ |
|
|
|
|
|
|
|
'query' => $order->getBooks(), |
|
|
|
|
|
|
|
'pagination' => [ |
|
|
|
|
|
|
|
'pageSize' => 1, |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
]); |
|
|
|
|
|
|
|
$items = $provider->getModels(); |
|
|
|
|
|
|
|
$this->assertEquals(1, count($items)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function testQuery() |
|
|
|
public function testQuery() |
|
|
|
{ |
|
|
|
{ |
|
|
|
$query = new Query; |
|
|
|
$query = new Query; |
|
|
|