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