DrizzleSchemaManagerTest.php 1.96 KB
Newer Older
1 2 3 4
<?php

namespace Doctrine\Tests\DBAL\Functional\Schema;

5
use Doctrine\DBAL\Schema\Table;
Sergei Morozov's avatar
Sergei Morozov committed
6
use Doctrine\DBAL\Types\BinaryType;
7

8 9
class DrizzleSchemaManagerTest extends SchemaManagerFunctionalTestCase
{
10
    public function testListTableWithBinary(): void
Steve Müller's avatar
Steve Müller committed
11 12 13
    {
        $tableName = 'test_binary_table';

14
        $table = new Table($tableName);
Steve Müller's avatar
Steve Müller committed
15
        $table->addColumn('id', 'integer');
Sergei Morozov's avatar
Sergei Morozov committed
16 17 18
        $table->addColumn('column_varbinary', 'binary', []);
        $table->addColumn('column_binary', 'binary', ['fixed' => true]);
        $table->setPrimaryKey(['id']);
Steve Müller's avatar
Steve Müller committed
19

Sergei Morozov's avatar
Sergei Morozov committed
20
        $this->schemaManager->createTable($table);
Steve Müller's avatar
Steve Müller committed
21

Sergei Morozov's avatar
Sergei Morozov committed
22
        $table = $this->schemaManager->listTableDetails($tableName);
Steve Müller's avatar
Steve Müller committed
23

Sergei Morozov's avatar
Sergei Morozov committed
24
        self::assertInstanceOf(BinaryType::class, $table->getColumn('column_varbinary')->getType());
25
        self::assertFalse($table->getColumn('column_varbinary')->getFixed());
Steve Müller's avatar
Steve Müller committed
26

Sergei Morozov's avatar
Sergei Morozov committed
27
        self::assertInstanceOf(BinaryType::class, $table->getColumn('column_binary')->getType());
28
        self::assertFalse($table->getColumn('column_binary')->getFixed());
Steve Müller's avatar
Steve Müller committed
29
    }
30

31
    public function testColumnCollation(): void
32
    {
Grégoire Paris's avatar
Grégoire Paris committed
33
        $table = new Table('test_collation');
34 35 36 37 38
        $table->addOption('collate', $collation = 'utf8_unicode_ci');
        $table->addColumn('id', 'integer');
        $table->addColumn('text', 'text');
        $table->addColumn('foo', 'text')->setPlatformOption('collation', 'utf8_swedish_ci');
        $table->addColumn('bar', 'text')->setPlatformOption('collation', 'utf8_general_ci');
Sergei Morozov's avatar
Sergei Morozov committed
39
        $this->schemaManager->dropAndCreateTable($table);
40

Sergei Morozov's avatar
Sergei Morozov committed
41
        $columns = $this->schemaManager->listTableColumns('test_collation');
42

43 44 45 46
        self::assertArrayNotHasKey('collation', $columns['id']->getPlatformOptions());
        self::assertEquals('utf8_unicode_ci', $columns['text']->getPlatformOption('collation'));
        self::assertEquals('utf8_swedish_ci', $columns['foo']->getPlatformOption('collation'));
        self::assertEquals('utf8_general_ci', $columns['bar']->getPlatformOption('collation'));
47
    }
Steve Müller's avatar
Steve Müller committed
48
}