You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.1 KiB
97 lines
2.1 KiB
<?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); |
|
} |
|
} |