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)); | 
						|
	} | 
						|
} |