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.
		
		
		
		
		
			
		
			
				
					
					
						
							74 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
	
	
							74 lines
						
					
					
						
							2.0 KiB
						
					
					
				| <?php | |
|  | |
| namespace yiiunit\extensions\sphinx; | |
|  | |
| use yiiunit\data\ar\sphinx\ActiveRecord; | |
| use yiiunit\data\ar\ActiveRecord as ActiveRecordDb; | |
| use yiiunit\data\ar\sphinx\ArticleIndex; | |
| use yiiunit\data\ar\sphinx\ArticleDb; | |
| use yiiunit\data\ar\sphinx\TagDb; | |
|  | |
| /** | |
|  * @group sphinx | |
|  */ | |
| class ExternalActiveRelationTest extends SphinxTestCase | |
| { | |
| 	protected function setUp() | |
| 	{ | |
| 		parent::setUp(); | |
| 		ActiveRecord::$db = $this->getConnection(); | |
| 		ActiveRecordDb::$db = $this->getDbConnection(); | |
| 	} | |
|  | |
| 	// Tests : | |
|  | |
| 	public function testFindLazy() | |
| 	{ | |
| 		/** @var ArticleIndex $article */ | |
| 		$article = ArticleIndex::find(['id' => 2]); | |
|  | |
| 		// has one : | |
| 		$this->assertFalse($article->isRelationPopulated('source')); | |
| 		$source = $article->source; | |
| 		$this->assertTrue($article->isRelationPopulated('source')); | |
| 		$this->assertTrue($source instanceof ArticleDb); | |
| 		$this->assertEquals(1, count($article->populatedRelations)); | |
|  | |
| 		// has many : | |
| 		/*$this->assertFalse($article->isRelationPopulated('tags')); | |
| 		$tags = $article->tags; | |
| 		$this->assertTrue($article->isRelationPopulated('tags')); | |
| 		$this->assertEquals(3, count($tags)); | |
| 		$this->assertTrue($tags[0] instanceof TagDb);*/ | |
| 	} | |
|  | |
| 	public function testFindEager() | |
| 	{ | |
| 		// has one : | |
| 		$articles = ArticleIndex::find()->with('source')->all(); | |
| 		$this->assertEquals(2, count($articles)); | |
| 		$this->assertTrue($articles[0]->isRelationPopulated('source')); | |
| 		$this->assertTrue($articles[1]->isRelationPopulated('source')); | |
| 		$this->assertTrue($articles[0]->source instanceof ArticleDb); | |
| 		$this->assertTrue($articles[1]->source instanceof ArticleDb); | |
|  | |
| 		// has many : | |
| 		/*$articles = ArticleIndex::find()->with('tags')->all(); | |
| 		$this->assertEquals(2, count($articles)); | |
| 		$this->assertTrue($articles[0]->isRelationPopulated('tags')); | |
| 		$this->assertTrue($articles[1]->isRelationPopulated('tags'));*/ | |
| 	} | |
|  | |
| 	/** | |
| 	 * @depends testFindEager | |
| 	 */ | |
| 	public function testFindWithSnippets() | |
| 	{ | |
| 		$articles = ArticleIndex::find() | |
| 			->match('about') | |
| 			->with('source') | |
| 			->snippetByModel() | |
| 			->all(); | |
| 		$this->assertEquals(2, count($articles)); | |
| 	} | |
| } |