|
|
|
<?php
|
|
|
|
|
|
|
|
namespace yiiunit\extensions\mongo;
|
|
|
|
|
|
|
|
use yii\mongo\Query;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @group mongo
|
|
|
|
*/
|
|
|
|
class QueryTest extends MongoTestCase
|
|
|
|
{
|
|
|
|
public function testSelect()
|
|
|
|
{
|
|
|
|
// default
|
|
|
|
$query = new Query;
|
|
|
|
$select = [];
|
|
|
|
$query->select($select);
|
|
|
|
$this->assertEquals($select, $query->select);
|
|
|
|
|
|
|
|
$query = new Query;
|
|
|
|
$select = ['name', 'something'];
|
|
|
|
$query->select($select);
|
|
|
|
$this->assertEquals($select, $query->select);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testFrom()
|
|
|
|
{
|
|
|
|
$query = new Query;
|
|
|
|
$from = 'customer';
|
|
|
|
$query->from($from);
|
|
|
|
$this->assertEquals($from, $query->from);
|
|
|
|
|
|
|
|
$query = new Query;
|
|
|
|
$from = ['', 'customer'];
|
|
|
|
$query->from($from);
|
|
|
|
$this->assertEquals($from, $query->from);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testWhere()
|
|
|
|
{
|
|
|
|
$query = new Query;
|
|
|
|
$query->where(['name' => 'name1']);
|
|
|
|
$this->assertEquals(['name' => 'name1'], $query->where);
|
|
|
|
|
|
|
|
$query->andWhere(['address' => 'address1']);
|
|
|
|
$this->assertEquals(
|
|
|
|
[
|
|
|
|
'and',
|
|
|
|
['name' => 'name1'],
|
|
|
|
['address' => 'address1']
|
|
|
|
],
|
|
|
|
$query->where
|
|
|
|
);
|
|
|
|
|
|
|
|
$query->orWhere(['name' => 'name2']);
|
|
|
|
$this->assertEquals(
|
|
|
|
[
|
|
|
|
'or',
|
|
|
|
[
|
|
|
|
'and',
|
|
|
|
['name' => 'name1'],
|
|
|
|
['address' => 'address1']
|
|
|
|
],
|
|
|
|
['name' => 'name2']
|
|
|
|
|
|
|
|
],
|
|
|
|
$query->where
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testOrder()
|
|
|
|
{
|
|
|
|
$query = new Query;
|
|
|
|
$query->orderBy('team');
|
|
|
|
$this->assertEquals(['team' => SORT_ASC], $query->orderBy);
|
|
|
|
|
|
|
|
$query->addOrderBy('company');
|
|
|
|
$this->assertEquals(['team' => SORT_ASC, 'company' => SORT_ASC], $query->orderBy);
|
|
|
|
|
|
|
|
$query->addOrderBy('age');
|
|
|
|
$this->assertEquals(['team' => SORT_ASC, 'company' => SORT_ASC, 'age' => SORT_ASC], $query->orderBy);
|
|
|
|
|
|
|
|
$query->addOrderBy(['age' => SORT_DESC]);
|
|
|
|
$this->assertEquals(['team' => SORT_ASC, 'company' => SORT_ASC, 'age' => SORT_DESC], $query->orderBy);
|
|
|
|
|
|
|
|
$query->addOrderBy('age ASC, company DESC');
|
|
|
|
$this->assertEquals(['team' => SORT_ASC, 'company' => SORT_DESC, 'age' => SORT_ASC], $query->orderBy);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testLimitOffset()
|
|
|
|
{
|
|
|
|
$query = new Query;
|
|
|
|
$query->limit(10)->offset(5);
|
|
|
|
$this->assertEquals(10, $query->limit);
|
|
|
|
$this->assertEquals(5, $query->offset);
|
|
|
|
}
|
|
|
|
}
|