From aa31b56aafaa9ac1ae84c80bcc7de7e6f6b0edca Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Tue, 9 Jul 2013 09:34:45 -0400 Subject: [PATCH] Finished unit test of ActiveDataProvider. --- framework/yii/data/ActiveDataProvider.php | 5 ++-- .../framework/data/ActiveDataProviderTest.php | 23 +++++++++++++++++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/framework/yii/data/ActiveDataProvider.php b/framework/yii/data/ActiveDataProvider.php index 29f9fab811..13502f9cd8 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 61b8256928..608fed6b41 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)); } }