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.
		
		
		
		
		
			
		
			
				
					
					
						
							91 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
	
	
							91 lines
						
					
					
						
							1.9 KiB
						
					
					
				<?php | 
						|
 | 
						|
namespace yiiunit\extensions\mongo; | 
						|
 | 
						|
use yii\data\ActiveDataProvider; | 
						|
use yii\mongo\Query; | 
						|
use yiiunit\data\ar\mongo\ActiveRecord; | 
						|
use yiiunit\data\ar\mongo\Customer; | 
						|
 | 
						|
/** | 
						|
 * @group mongo | 
						|
 */ | 
						|
class ActiveDataProviderTest extends MongoTestCase | 
						|
{ | 
						|
	protected function setUp() | 
						|
	{ | 
						|
		parent::setUp(); | 
						|
		ActiveRecord::$db = $this->getConnection(); | 
						|
		$this->setUpTestRows(); | 
						|
	} | 
						|
 | 
						|
	protected function tearDown() | 
						|
	{ | 
						|
		$this->dropCollection(Customer::collectionName()); | 
						|
		parent::tearDown(); | 
						|
	} | 
						|
 | 
						|
	/** | 
						|
	 * 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); | 
						|
	} | 
						|
 | 
						|
	// Tests : | 
						|
 | 
						|
	public function testQuery() | 
						|
	{ | 
						|
		$query = new Query; | 
						|
		$query->from('customer'); | 
						|
 | 
						|
		$provider = new ActiveDataProvider([ | 
						|
			'query' => $query, | 
						|
			'db' => $this->getConnection(), | 
						|
		]); | 
						|
		$models = $provider->getModels(); | 
						|
		$this->assertEquals(10, count($models)); | 
						|
 | 
						|
		$provider = new ActiveDataProvider([ | 
						|
			'query' => $query, | 
						|
			'db' => $this->getConnection(), | 
						|
			'pagination' => [ | 
						|
				'pageSize' => 5, | 
						|
			] | 
						|
		]); | 
						|
		$models = $provider->getModels(); | 
						|
		$this->assertEquals(5, count($models)); | 
						|
	} | 
						|
 | 
						|
	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); | 
						|
 | 
						|
		$provider = new ActiveDataProvider([ | 
						|
			'query' => Customer::find(), | 
						|
			'pagination' => [ | 
						|
				'pageSize' => 5, | 
						|
			] | 
						|
		]); | 
						|
		$models = $provider->getModels(); | 
						|
		$this->assertEquals(5, count($models)); | 
						|
	} | 
						|
} |