ActiveDataProviderTest.php 2.3 KB
Newer Older
1 2
<?php

3
namespace yiiunit\extensions\mongodb;
4 5

use yii\data\ActiveDataProvider;
6 7 8
use yii\mongodb\Query;
use yiiunit\data\ar\mongodb\ActiveRecord;
use yiiunit\data\ar\mongodb\Customer;
9 10

/**
11
 * @group mongodb
12
 */
13
class ActiveDataProviderTest extends MongoDbTestCase
14
{
15 16 17 18 19 20
    protected function setUp()
    {
        parent::setUp();
        ActiveRecord::$db = $this->getConnection();
        $this->setUpTestRows();
    }
21

22 23 24 25 26
    protected function tearDown()
    {
        $this->dropCollection(Customer::collectionName());
        parent::tearDown();
    }
27

28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
    /**
     * Sets up test rows.
     */
    protected function setUpTestRows()
    {
        $collection = $this->getConnection()->getCollection('customer');
        $rows = [];
        for ($i = 1; $i <= 10; $i++) {
            $rows[] = [
                'name' => 'name' . $i,
                'email' => 'email' . $i,
                'address' => 'address' . $i,
                'status' => $i,
            ];
        }
        $collection->batchInsert($rows);
    }
45

46
    // Tests :
47

48 49 50 51
    public function testQuery()
    {
        $query = new Query;
        $query->from('customer');
52

53 54 55 56 57 58
        $provider = new ActiveDataProvider([
            'query' => $query,
            'db' => $this->getConnection(),
        ]);
        $models = $provider->getModels();
        $this->assertEquals(10, count($models));
59

60 61 62 63 64 65 66 67 68 69
        $provider = new ActiveDataProvider([
            'query' => $query,
            'db' => $this->getConnection(),
            'pagination' => [
                'pageSize' => 5,
            ]
        ]);
        $models = $provider->getModels();
        $this->assertEquals(5, count($models));
    }
70

71 72 73 74 75 76 77 78 79 80
    public function testActiveQuery()
    {
        $provider = new ActiveDataProvider([
            'query' => Customer::find()->orderBy('id ASC'),
        ]);
        $models = $provider->getModels();
        $this->assertEquals(10, count($models));
        $this->assertTrue($models[0] instanceof Customer);
        $keys = $provider->getKeys();
        $this->assertTrue($keys[0] instanceof \MongoId);
81

82 83 84 85 86 87 88 89 90
        $provider = new ActiveDataProvider([
            'query' => Customer::find(),
            'pagination' => [
                'pageSize' => 5,
            ]
        ]);
        $models = $provider->getModels();
        $this->assertEquals(5, count($models));
    }
AlexGx committed
91
}