getConnection(); } protected function tearDown() { $this->truncateRuntimeIndex('yii2_test_rt_index'); parent::tearDown(); } // Tests : public function testFind() { // find one $result = ArticleIndex::find(); $this->assertTrue($result instanceof ActiveQuery); $article = $result->one(); $this->assertTrue($article instanceof ArticleIndex); // find all $articles = ArticleIndex::find()->all(); $this->assertEquals(2, count($articles)); $this->assertTrue($articles[0] instanceof ArticleIndex); $this->assertTrue($articles[1] instanceof ArticleIndex); // find fulltext $article = ArticleIndex::find(2); $this->assertTrue($article instanceof ArticleIndex); $this->assertEquals(2, $article->id); // find by column values $article = ArticleIndex::find(['id' => 2, 'author_id' => 2]); $this->assertTrue($article instanceof ArticleIndex); $this->assertEquals(2, $article->id); $this->assertEquals(2, $article->author_id); $article = ArticleIndex::find(['id' => 2, 'author_id' => 1]); $this->assertNull($article); // find by attributes $article = ArticleIndex::find()->where(['author_id' => 2])->one(); $this->assertTrue($article instanceof ArticleIndex); $this->assertEquals(2, $article->id); // find custom column $article = ArticleIndex::find()->select(['*', '(5*2) AS custom_column']) ->where(['author_id' => 1])->one(); $this->assertEquals(1, $article->id); $this->assertEquals(10, $article->custom_column); // find count, sum, average, min, max, scalar $this->assertEquals(2, ArticleIndex::find()->count()); $this->assertEquals(1, ArticleIndex::find()->where('id=1')->count()); $this->assertEquals(3, ArticleIndex::find()->sum('id')); $this->assertEquals(1.5, ArticleIndex::find()->average('id')); $this->assertEquals(1, ArticleIndex::find()->min('id')); $this->assertEquals(2, ArticleIndex::find()->max('id')); $this->assertEquals(2, ArticleIndex::find()->select('COUNT(*)')->scalar()); // scope $this->assertEquals(1, ArticleIndex::find()->favoriteAuthor()->count()); // asArray $article = ArticleIndex::find()->where('id=2')->asArray()->one(); unset($article['add_date']); $this->assertEquals([ 'id' => '2', 'author_id' => '2', 'tag' => '3,4', ], $article); // indexBy $articles = ArticleIndex::find()->indexBy('author_id')->orderBy('id DESC')->all(); $this->assertEquals(2, count($articles)); $this->assertTrue($articles['1'] instanceof ArticleIndex); $this->assertTrue($articles['2'] instanceof ArticleIndex); // indexBy callable $articles = ArticleIndex::find()->indexBy(function ($article) { return $article->id . '-' . $article->author_id; })->orderBy('id DESC')->all(); $this->assertEquals(2, count($articles)); $this->assertTrue($articles['1-1'] instanceof ArticleIndex); $this->assertTrue($articles['2-2'] instanceof ArticleIndex); } public function testFindBySql() { // find one $article = ArticleIndex::findBySql('SELECT * FROM yii2_test_article_index ORDER BY id DESC')->one(); $this->assertTrue($article instanceof ArticleIndex); $this->assertEquals(2, $article->author_id); // find all $articles = ArticleIndex::findBySql('SELECT * FROM yii2_test_article_index')->all(); $this->assertEquals(2, count($articles)); // find with parameter binding $article = ArticleIndex::findBySql('SELECT * FROM yii2_test_article_index WHERE id=:id', [':id' => 2])->one(); $this->assertTrue($article instanceof ArticleIndex); $this->assertEquals(2, $article->author_id); } public function testInsert() { $record = new RuntimeIndex; $record->id = 15; $record->title = 'test title'; $record->content = 'test content'; $record->type_id = 7; $record->category = [1, 2]; $this->assertTrue($record->isNewRecord); $record->save(); $this->assertEquals(15, $record->id); $this->assertFalse($record->isNewRecord); } /** * @depends testInsert */ public function testUpdate() { $record = new RuntimeIndex; $record->id = 2; $record->title = 'test title'; $record->content = 'test content'; $record->type_id = 7; $record->category = [1, 2]; $record->save(); // save $record = RuntimeIndex::find(['id' => 2]); $this->assertTrue($record instanceof RuntimeIndex); $this->assertEquals(7, $record->type_id); $this->assertFalse($record->isNewRecord); $record->type_id = 9; $record->save(); $this->assertEquals(9, $record->type_id); $this->assertFalse($record->isNewRecord); $record2 = RuntimeIndex::find(['id' => 2]); $this->assertEquals(9, $record2->type_id); // replace $query = 'replace'; $rows = RuntimeIndex::find($query); $this->assertEmpty($rows); $record = RuntimeIndex::find(['id' => 2]); $record->content = 'Test content with ' . $query; $record->save(); $rows = RuntimeIndex::find()->match($query); $this->assertNotEmpty($rows); // updateAll $pk = ['id' => 2]; $ret = RuntimeIndex::updateAll(['type_id' => 55], $pk); $this->assertEquals(1, $ret); $record = RuntimeIndex::find($pk); $this->assertEquals(55, $record->type_id); } /** * @depends testInsert */ public function testDelete() { // delete $record = new RuntimeIndex; $record->id = 2; $record->title = 'test title'; $record->content = 'test content'; $record->type_id = 7; $record->category = [1, 2]; $record->save(); $record = RuntimeIndex::find(['id' => 2]); $record->delete(); $record = RuntimeIndex::find(['id' => 2]); $this->assertNull($record); // deleteAll $record = new RuntimeIndex; $record->id = 2; $record->title = 'test title'; $record->content = 'test content'; $record->type_id = 7; $record->category = [1, 2]; $record->save(); $ret = RuntimeIndex::deleteAll('id = 2'); $this->assertEquals(1, $ret); $records = RuntimeIndex::find()->all(); $this->assertEquals(0, count($records)); } public function testCallSnippets() { $query = 'pencil'; $source = 'Some data sentence about ' . $query; $snippet = ArticleIndex::callSnippets($source, $query); $this->assertNotEmpty($snippet, 'Unable to call snippets!'); $this->assertContains('' . $query . '', $snippet, 'Query not present in the snippet!'); $rows = ArticleIndex::callSnippets([$source], $query); $this->assertNotEmpty($rows, 'Unable to call snippets!'); $this->assertContains('' . $query . '', $rows[0], 'Query not present in the snippet!'); } public function testCallKeywords() { $text = 'table pencil'; $rows = ArticleIndex::callKeywords($text); $this->assertNotEmpty($rows, 'Unable to call keywords!'); $this->assertArrayHasKey('tokenized', $rows[0], 'No tokenized keyword!'); $this->assertArrayHasKey('normalized', $rows[0], 'No normalized keyword!'); } }