diff --git a/framework/yii/data/ActiveDataProvider.php b/framework/yii/data/ActiveDataProvider.php index 29f9fab..13502f9 100644 --- a/framework/yii/data/ActiveDataProvider.php +++ b/framework/yii/data/ActiveDataProvider.php @@ -35,10 +35,9 @@ use yii\db\Connection; * And the following example shows how to use ActiveDataProvider without ActiveRecord: * * ~~~ + * $query = new Query; * $provider = new ActiveDataProvider(array( - * 'query' => new Query(array( - * 'from' => 'tbl_post', - * )), + * 'query' => $query->from('tbl_post'), * 'pagination' => array( * 'pageSize' => 20, * ), diff --git a/tests/unit/framework/data/ActiveDataProviderTest.php b/tests/unit/framework/data/ActiveDataProviderTest.php index 61b8256..608fed6 100644 --- a/tests/unit/framework/data/ActiveDataProviderTest.php +++ b/tests/unit/framework/data/ActiveDataProviderTest.php @@ -8,6 +8,7 @@ namespace yiiunit\framework\data; use yii\data\ActiveDataProvider; +use yii\db\Query; use yiiunit\data\ar\ActiveRecord; use yiiunit\framework\db\DatabaseTestCase; use yiiunit\data\ar\Order; @@ -27,10 +28,12 @@ class ActiveDataProviderTest extends DatabaseTestCase public function testActiveQuery() { $provider = new ActiveDataProvider(array( - 'query' => Order::find(), + 'query' => Order::find()->orderBy('id'), )); $orders = $provider->getItems(); $this->assertEquals(3, count($orders)); + $this->assertTrue($orders[0] instanceof Order); + $this->assertEquals(array(1, 2, 3), $provider->getKeys()); $provider = new ActiveDataProvider(array( 'query' => Order::find(), @@ -44,7 +47,23 @@ class ActiveDataProviderTest extends DatabaseTestCase public function testQuery() { + $query = new Query; + $provider = new ActiveDataProvider(array( + 'query' => $query->from('tbl_order')->orderBy('id'), + )); + $orders = $provider->getItems(); + $this->assertEquals(3, count($orders)); + $this->assertTrue(is_array($orders[0])); + $this->assertEquals(array(0, 1, 2), $provider->getKeys()); - + $query = new Query; + $provider = new ActiveDataProvider(array( + 'query' => $query->from('tbl_order'), + 'pagination' => array( + 'pageSize' => 2, + ) + )); + $orders = $provider->getItems(); + $this->assertEquals(2, count($orders)); } }