|  |  |  | <?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->relatedRecords));
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// 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));
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | }
 |