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