Support more index types in DB table parser

UNIQUE, SPATIAL, FULLTEXT
This commit is contained in:
Kijin Sung 2020-07-11 15:42:37 +09:00
parent 5f8ceafdf6
commit 9b776942e5
5 changed files with 25 additions and 8 deletions

View file

@ -17,11 +17,15 @@ class DBTableParserTest extends \Codeception\TestCase\Test
$this->assertEquals('number', $table->columns['module_srl']->xetype);
$this->assertTrue($table->columns['module_srl']->is_indexed);
$this->assertTrue($table->columns['list_order']->is_unique);
$this->assertFalse($table->columns['geometry']->is_unique);
$this->assertEquals(6, count($table->indexes));
$this->assertEquals(8, count($table->indexes));
$this->assertEquals(['module_srl' => 0, 'document_srl' => 0], $table->indexes['idx_module_document_srl']->columns);
$this->assertEquals(['status' => 6], $table->indexes['idx_status']->columns);
$this->assertTrue($table->indexes['unique_list_order']->is_unique);
$this->assertEquals('UNIQUE', $table->indexes['unique_list_order']->type);
$this->assertEquals('SPATIAL', $table->indexes['spatial_geometry']->type);
$this->assertEquals('FULLTEXT', $table->indexes['fulltext_description']->type);
$this->assertNull($table->indexes['idx_comment_srl']->type);
$this->assertEquals(2, count($table->constraints));
$this->assertEquals('FOREIGN KEY', $table->constraints[0]->type);
@ -44,7 +48,9 @@ class DBTableParserTest extends \Codeception\TestCase\Test
$this->assertContains('INDEX `idx_document_srl` (`document_srl`),', $sql);
$this->assertContains('INDEX `idx_module_document_srl` (`module_srl`, `document_srl`),', $sql);
$this->assertContains('INDEX `idx_status` (`status`(6)),', $sql);
$this->assertContains('UNIQUE `unique_list_order` (`list_order`),', $sql);
$this->assertContains('UNIQUE INDEX `unique_list_order` (`list_order`),', $sql);
$this->assertContains('SPATIAL INDEX `spatial_geometry` (`geometry`),', $sql);
$this->assertContains('FULLTEXT INDEX `fulltext_description` (`description`),', $sql);
$this->assertContains('FOREIGN KEY (`module_srl`) REFERENCES `rx_module` (`module_srl`) ON DELETE CASCADE ON UPDATE RESTRICT', $sql);
$this->assertContains('CHECK (list_order < 0)', $sql);
$this->assertContains('CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci', $sql);