Skip to content

Commit

Permalink
linter fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
pvsaintpe committed Aug 4, 2019
1 parent 5186635 commit 72fc23b
Showing 1 changed file with 82 additions and 86 deletions.
168 changes: 82 additions & 86 deletions tests/Functional/Subscribers/ChangeColumnSubscriberTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Umbrellio\Postgres\Tests\Unit\Subscribers;

use Closure;
use Codeception\Util\ReflectionHelper;
use Doctrine\DBAL\Event\SchemaAlterTableChangeColumnEventArgs;
use Doctrine\DBAL\Events;
Expand All @@ -13,13 +14,10 @@
use Doctrine\DBAL\Schema\Comparator;
use Doctrine\DBAL\Schema\Table;
use Doctrine\DBAL\Schema\TableDiff;
use Doctrine\DBAL\Types\Type;
use Generator;
use Illuminate\Database\Query\Expression;
use Illuminate\Database\Schema\Grammars\ChangeColumn;
use Illuminate\Support\Collection;
use Closure;
use Illuminate\Support\Facades\DB;
use Generator;
use ReflectionMethod;
use Umbrellio\Postgres\PostgresConnection;
use Umbrellio\Postgres\Schema\Blueprint;
Expand Down Expand Up @@ -94,60 +92,87 @@ public function provideSchemas(): Generator
yield $this->changeLengthCase();
}

private function changeTypeWithUsingCase(): array
private function getEventArgsForColumn(string $columnName): SchemaAlterTableChangeColumnEventArgs
{
/** @var PostgresConnection $connection */
$connection = DB::connection();
$schemaManager = $connection->getDoctrineSchemaManager();

$this->columns = [];
foreach ($this->getListColumns() as $listColumn) {
$this->columns[] = ReflectionHelper::invokePrivateMethod(
$schemaManager,
'_getPortableTableColumnDefinition',
['tableName' => $listColumn]
);
}

$this->table = new Table('some_table', $this->columns);

$this->tableDiff = (new Comparator())->diffTable(
$this->table,
$this
->getStaticMethod(ChangeColumn::class, 'getTableWithColumnChanges')
->invoke(null, $this->blueprint, $this->table)
);

foreach ($this->tableDiff->changedColumns as $columnDiff) {
if ($columnDiff->oldColumnName !== $columnName) {
continue;
}
$this->columnDiff = $columnDiff;
}

return new SchemaAlterTableChangeColumnEventArgs($this->columnDiff, $this->tableDiff, $this->platform);
}

private function dropCommentCase(): array
{
return [
'some_integer_default',
'some_comment',
function (Blueprint $table, string $column) {
$table
->text($column)
->default(null)
->using(sprintf("('[some_exp:' || %s || ']')::character varying", $column))
->change();
$table->string($column)->nullable(false)->change();
},
[
'ALTER TABLE some_table ALTER some_integer_default DROP DEFAULT',
"ALTER TABLE some_table ALTER some_integer_default TYPE TEXT USING ('[some_exp:' || some_integer_default || ']')::character varying",
]
['ALTER TABLE some_table ALTER some_comment SET NOT NULL'],
];
}

private function setSimpleDefaultCase(): array
private function changeCommentCase(): array
{
return [
'some_comment',
function (Blueprint $table, string $column) {
$table->string($column)->default('some_default')->change();
$table->string($column)
->comment('new_comment')
->change();
},
[
"ALTER TABLE some_table ALTER some_comment SET DEFAULT 'some_default'"
]
["COMMENT ON COLUMN some_table.some_comment IS 'new_comment'"],
];
}

private function setExpressionDefaultCase(): array
private function dropNotNullCase(): array
{
return [
'some_comment',
'some_integer_default',
function (Blueprint $table, string $column) {
$table->string($column)->default(new Expression("('some_string:' || some_comment)::character varying"))->change();
$table->integer($column)->nullable()->change();
},
[
"ALTER TABLE some_table ALTER some_comment SET DEFAULT ('some_string:' || some_comment)::character varying"
]
['ALTER TABLE some_table ALTER some_integer_default DROP NOT NULL'],
];
}

private function changeLengthCase(): array
private function createSequenceCase(): array
{
return [
'some_comment',
'some_integer_default',
function (Blueprint $table, string $column) {
$table->string($column, 75)->change();
$table->increments($column)->change();
},
[
'ALTER TABLE some_table ALTER some_comment TYPE VARCHAR(75)',
]
'CREATE SEQUENCE some_table_some_integer_default_seq',
"SELECT setval('some_table_some_integer_default_seq', (SELECT MAX(some_integer_default) FROM some_table))",
"ALTER TABLE some_table ALTER some_integer_default SET DEFAULT nextval('some_table_some_integer_default_seq')",
],
];
}

Expand All @@ -161,94 +186,65 @@ function (Blueprint $table, string $column) {
[
'ALTER TABLE some_table ALTER some_key DROP DEFAULT',
'ALTER TABLE some_table ALTER some_key TYPE INT USING some_key::INT',
]
],
];
}

private function dropNotNullCase(): array
private function setSimpleDefaultCase(): array
{
return [
'some_integer_default',
'some_comment',
function (Blueprint $table, string $column) {
$table->integer($column)->nullable()->change();
$table->string($column)->default('some_default')->change();
},
['ALTER TABLE some_table ALTER some_integer_default DROP NOT NULL']
["ALTER TABLE some_table ALTER some_comment SET DEFAULT 'some_default'"],
];
}

private function createSequenceCase(): array
private function setExpressionDefaultCase(): array
{
return [
'some_integer_default',
'some_comment',
function (Blueprint $table, string $column) {
$table->increments($column)->change();
$table->string($column)->default(
new Expression("('some_string:' || some_comment)::character varying")
)->change();
},
[
'CREATE SEQUENCE some_table_some_integer_default_seq',
"SELECT setval('some_table_some_integer_default_seq', (SELECT MAX(some_integer_default) FROM some_table))",
"ALTER TABLE some_table ALTER some_integer_default SET DEFAULT nextval('some_table_some_integer_default_seq')",
]
"ALTER TABLE some_table ALTER some_comment SET DEFAULT ('some_string:' || some_comment)::character varying",
],
];
}

private function dropCommentCase(): array
private function changeTypeWithUsingCase(): array
{
return [
'some_comment',
'some_integer_default',
function (Blueprint $table, string $column) {
$table->string($column)->nullable(false)->change();
$table
->text($column)
->default(null)
->using(sprintf("('[some_exp:' || %s || ']')::character varying", $column))
->change();
},
['ALTER TABLE some_table ALTER some_comment SET NOT NULL']
[
'ALTER TABLE some_table ALTER some_integer_default DROP DEFAULT',
"ALTER TABLE some_table ALTER some_integer_default TYPE TEXT USING ('[some_exp:' || some_integer_default || ']')::character varying",
],
];
}

private function changeCommentCase(): array
private function changeLengthCase(): array
{
return [
'some_comment',
function (Blueprint $table, string $column) {
$table->string($column)
->comment('new_comment')
->change();
$table->string($column, 75)->change();
},
["COMMENT ON COLUMN some_table.some_comment IS 'new_comment'"]
['ALTER TABLE some_table ALTER some_comment TYPE VARCHAR(75)'],
];
}

private function getEventArgsForColumn(string $columnName): SchemaAlterTableChangeColumnEventArgs
{
/** @var PostgresConnection $connection */
$connection = DB::connection();
$schemaManager = $connection->getDoctrineSchemaManager();

$this->columns = [];
foreach ($this->getListColumns() as $listColumn) {
$this->columns[] = ReflectionHelper::invokePrivateMethod(
$schemaManager,
'_getPortableTableColumnDefinition',
['tableName' => $listColumn]
);
}

$this->table = new Table('some_table', $this->columns);

$this->tableDiff = (new Comparator())->diffTable(
$this->table,
$this
->getStaticMethod(ChangeColumn::class, 'getTableWithColumnChanges')
->invoke(null, $this->blueprint, $this->table)
);

foreach ($this->tableDiff->changedColumns as $columnDiff) {
if ($columnDiff->oldColumnName !== $columnName) {
continue;
}
$this->columnDiff = $columnDiff;
}

return new SchemaAlterTableChangeColumnEventArgs($this->columnDiff, $this->tableDiff, $this->platform);
}

private function getListColumns(): array
{
return [
Expand Down

0 comments on commit 72fc23b

Please sign in to comment.