1
0
mirror of synced 2025-02-09 00:39:25 +03:00

Enforce sequence XSD requirement

Supply default values for allocationSize and initialValue optional parameters.

Related to: https://github.com/doctrine/doctrine2/issues/6682
This commit is contained in:
Sasha Alex Romanenko 2017-09-05 19:28:47 -04:00 committed by Luís Cobucci
parent dfc31bc855
commit b3331b2237
No known key found for this signature in database
GPG Key ID: EC61C5F01750ED3C
3 changed files with 45 additions and 4 deletions

View File

@ -3003,7 +3003,7 @@ class ClassMetadataInfo implements ClassMetadata
*/
public function setSequenceGeneratorDefinition(array $definition)
{
if ( ! isset($definition['sequenceName'])) {
if ( ! isset($definition['sequenceName']) || trim($definition['sequenceName']) === '') {
throw MappingException::missingSequenceName($this->name);
}
@ -3012,6 +3012,14 @@ class ClassMetadataInfo implements ClassMetadata
$definition['quoted'] = true;
}
if ( ! isset($definition['allocationSize']) || trim($definition['allocationSize']) === '') {
$definition['allocationSize'] = '1';
}
if ( ! isset($definition['initialValue']) || trim($definition['initialValue']) === '') {
$definition['initialValue'] = '1';
}
$this->sequenceGeneratorDefinition = $definition;
}

View File

@ -0,0 +1,29 @@
<?php
namespace Doctrine\Test\ORM\Functional\Ticket;
use Doctrine\ORM\Mapping\ClassMetadataInfo;
use Doctrine\Tests\OrmFunctionalTestCase;
final class GH6682Test extends OrmFunctionalTestCase
{
/**
* @group 6682
*/
public function testIssue() : void
{
$parsedDefinition = [
'sequenceName' => 'test_sequence',
'allocationSize' => '',
'initialValue' => '',
];
$classMetadataInfo = new ClassMetadataInfo('test_entity');
$classMetadataInfo->setSequenceGeneratorDefinition($parsedDefinition);
self::assertSame(
['sequenceName' => 'test_sequence', 'allocationSize' => '1', 'initialValue' => '1'],
$classMetadataInfo->sequenceGeneratorDefinition
);
}
}

View File

@ -1188,15 +1188,19 @@ class ClassMetadataTest extends OrmTestCase
/**
* @group DDC-2662
* @group 6682
*/
public function testQuotedSequenceName()
public function testQuotedSequenceName() : void
{
$cm = new ClassMetadata(CMS\CmsUser::class);
$cm->initializeReflection(new RuntimeReflectionService());
$cm->initializeReflection(new RuntimeReflectionService());
$cm->setSequenceGeneratorDefinition(['sequenceName' => '`foo`']);
$this->assertEquals(['sequenceName' => 'foo', 'quoted' => true], $cm->sequenceGeneratorDefinition);
self::assertSame(
['sequenceName' => 'foo', 'quoted' => true, 'allocationSize' => '1', 'initialValue' => '1'],
$cm->sequenceGeneratorDefinition
);
}
/**