Skip to content

Commit

Permalink
Fix ColumnDefinitionParser (#922)
Browse files Browse the repository at this point in the history
  • Loading branch information
Tigrov authored Jan 22, 2025
1 parent 03a0367 commit 8c77a84
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 21 deletions.
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@
- Enh #875: Ignore "Packets out of order..." warnings in `AbstractPdoCommand::internalExecute()` method (@Tigrov)
- Enh #877: Separate column type constants (@Tigrov)
- New #878: Realize `ColumnBuilder` class (@Tigrov)
- New #878, #900, #914: Realize `ColumnDefinitionParser` class (@Tigrov)
- New #878, #900, #914, #922: Implement `ColumnDefinitionParser` class (@Tigrov)
- Enh #881: Refactor `ColumnSchemaInterface` and `AbstractColumnSchema` (@Tigrov)
- New #882: Move `ArrayColumnSchema` and `StructuredColumnSchema` classes from `db-pgsql` package (@Tigrov)
- New #883, #901: Add `ColumnDefinitionBuilder` class and `QueryBuilderInterface::buildColumnDefinition()` method (@Tigrov)
- New #883, #901, #922: Add `ColumnDefinitionBuilder` class and `QueryBuilderInterface::buildColumnDefinition()` method (@Tigrov)
- Enh #885: Refactor `AbstractDsn` class (@Tigrov)
- Chg #889: Update `AbstractDMLQueryBuilder::insertBatch()` method (@Tigrov)
- Enh #890: Add properties of `AbstractColumnSchema` class to constructor (@Tigrov)
Expand Down
8 changes: 4 additions & 4 deletions src/Syntax/ColumnDefinitionParser.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
/**
* Parses column definition string. For example, `string(255)` or `int unsigned`.
*/
final class ColumnDefinitionParser
class ColumnDefinitionParser
{
/**
* Parses column definition string.
Expand Down Expand Up @@ -62,7 +62,7 @@ public function parse(string $definition): array
/**
* @psalm-return array{enumValues: list<string>}
*/
private function enumInfo(string $values): array
protected function enumInfo(string $values): array
{
preg_match_all("/'([^']*)'/", $values, $matches);

Expand All @@ -80,7 +80,7 @@ private function enumInfo(string $values): array
* unsigned?: bool
* }
*/
private function extraInfo(string $extra): array
protected function extraInfo(string $extra): array
{
if (empty($extra)) {
return [];
Expand Down Expand Up @@ -137,7 +137,7 @@ private function extraInfo(string $extra): array
/**
* @psalm-return array{size: int, scale?: int}
*/
private function sizeInfo(string $size): array
protected function sizeInfo(string $size): array
{
$values = explode(',', $size);

Expand Down
32 changes: 32 additions & 0 deletions tests/AbstractColumnDefinitionParserTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

declare(strict_types=1);

namespace Yiisoft\Db\Tests;

use PHPUnit\Framework\TestCase;
use Yiisoft\Db\Syntax\ColumnDefinitionParser;
use Yiisoft\Db\Tests\Support\TestTrait;

/**
* @group db
*/
abstract class AbstractColumnDefinitionParserTest extends TestCase
{
use TestTrait;

protected function createColumnDefinitionParser(): ColumnDefinitionParser
{
return new ColumnDefinitionParser();
}

/**
* @dataProvider \Yiisoft\Db\Tests\Provider\ColumnDefinitionParserProvider::parse
*/
public function testParse(string $definition, array $expected): void
{
$parser = $this->createColumnDefinitionParser();

$this->assertSame($expected, $parser->parse($definition));
}
}
17 changes: 2 additions & 15 deletions tests/Db/Syntax/ColumnDefinitionParserTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,11 @@

namespace Yiisoft\Db\Tests\Db\Syntax;

use PHPUnit\Framework\TestCase;
use Yiisoft\Db\Syntax\ColumnDefinitionParser;
use Yiisoft\Db\Tests\Support\TestTrait;
use Yiisoft\Db\Tests\AbstractColumnDefinitionParserTest;

/**
* @group db
*/
final class ColumnDefinitionParserTest extends TestCase
final class ColumnDefinitionParserTest extends AbstractColumnDefinitionParserTest
{
use TestTrait;

/**
* @dataProvider \Yiisoft\Db\Tests\Provider\ColumnDefinitionParserProvider::parse
*/
public function testParse(string $definition, array $expected): void
{
$parser = new ColumnDefinitionParser();

$this->assertSame($expected, $parser->parse($definition));
}
}

0 comments on commit 8c77a84

Please sign in to comment.