SQLAnywhereSchemaManagerTest.php 2.59 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
<?php

namespace Doctrine\Tests\DBAL\Functional\Schema;

use Doctrine\DBAL\Schema\Index;
use Doctrine\DBAL\Schema\Table;
use Doctrine\DBAL\Schema\View;

class SQLAnywhereSchemaManagerTest extends SchemaManagerFunctionalTestCase
{
11
    public function testCreateAndListViews() : void
12 13 14
    {
        $this->createTestTable('view_test_table');

Sergei Morozov's avatar
Sergei Morozov committed
15 16
        $name = 'doctrine_test_view';
        $sql  = 'SELECT * from DBA.view_test_table';
17 18 19

        $view = new View($name, $sql);

Sergei Morozov's avatar
Sergei Morozov committed
20
        $this->schemaManager->dropAndCreateView($view);
21

Sergei Morozov's avatar
Sergei Morozov committed
22
        $views = $this->schemaManager->listViews();
23

Sergei Morozov's avatar
Sergei Morozov committed
24
        self::assertCount(1, $views, 'Database has to have one view.');
Sergei Morozov's avatar
Sergei Morozov committed
25
        self::assertInstanceOf(View::class, $views[$name]);
26
        self::assertEquals($name, $views[$name]->getName());
27
        self::assertRegExp('/^SELECT \* from "?DBA"?\."?view_test_table"?$/', $views[$name]->getSql());
28 29
    }

30
    public function testDropAndCreateAdvancedIndex() : void
31 32
    {
        $table = $this->getTestTable('test_create_advanced_index');
Sergei Morozov's avatar
Sergei Morozov committed
33 34
        $this->schemaManager->dropAndCreateTable($table);
        $this->schemaManager->dropAndCreateIndex(
Sergei Morozov's avatar
Sergei Morozov committed
35
            new Index('test', ['test'], true, false, ['clustered', 'with_nulls_not_distinct', 'for_olap_workload']),
36 37 38
            $table->getName()
        );

Sergei Morozov's avatar
Sergei Morozov committed
39
        $tableIndexes = $this->schemaManager->listTableIndexes('test_create_advanced_index');
40
        self::assertIsArray($tableIndexes);
41
        self::assertEquals('test', $tableIndexes['test']->getName());
Sergei Morozov's avatar
Sergei Morozov committed
42
        self::assertEquals(['test'], $tableIndexes['test']->getColumns());
43 44 45 46 47
        self::assertTrue($tableIndexes['test']->isUnique());
        self::assertFalse($tableIndexes['test']->isPrimary());
        self::assertTrue($tableIndexes['test']->hasFlag('clustered'));
        self::assertTrue($tableIndexes['test']->hasFlag('with_nulls_not_distinct'));
        self::assertTrue($tableIndexes['test']->hasFlag('for_olap_workload'));
48 49
    }

50
    public function testListTableColumnsWithFixedStringTypeColumn() : void
51 52
    {
        $table = new Table('list_table_columns_char');
Sergei Morozov's avatar
Sergei Morozov committed
53 54 55
        $table->addColumn('id', 'integer', ['notnull' => true]);
        $table->addColumn('test', 'string', ['fixed' => true]);
        $table->setPrimaryKey(['id']);
56

Sergei Morozov's avatar
Sergei Morozov committed
57
        $this->schemaManager->dropAndCreateTable($table);
58

Sergei Morozov's avatar
Sergei Morozov committed
59
        $columns = $this->schemaManager->listTableColumns('list_table_columns_char');
60

61 62
        self::assertArrayHasKey('test', $columns);
        self::assertTrue($columns['test']->getFixed());
63
    }
64 65 66 67 68

    public function testCommentInTable() : void
    {
        self::markTestSkipped('Table level comments are not supported on SQLAnywhere');
    }
69
}