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\mongodb; | |
|  | |
| use yii\data\ActiveDataProvider; | |
| use yii\mongodb\Query; | |
| use yiiunit\data\ar\mongodb\ActiveRecord; | |
| use yiiunit\data\ar\mongodb\Customer; | |
|  | |
| /** | |
|  * @group mongodb | |
|  */ | |
| class ActiveDataProviderTest extends MongoDbTestCase | |
| { | |
| 	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)); | |
| 	} | |
| } |