[FrameworkBundle] Fix error in xsd which prevent to register more than one metadata

This commit is contained in:
Laurent VOULLEMIER 2020-09-15 17:33:03 +02:00
parent e608d05c69
commit 94e390b96a
5 changed files with 20 additions and 2 deletions

View File

@ -348,7 +348,7 @@
<xsd:complexType name="metadata"> <xsd:complexType name="metadata">
<xsd:sequence> <xsd:sequence>
<xsd:any minOccurs="0" processContents="lax"/> <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xsd:sequence> </xsd:sequence>
</xsd:complexType> </xsd:complexType>

View File

@ -10,6 +10,10 @@ $container->loadFromExtension('framework', [
FrameworkExtensionTest::class, FrameworkExtensionTest::class,
], ],
'initial_marking' => ['draft'], 'initial_marking' => ['draft'],
'metadata' => [
'title' => 'article workflow',
'description' => 'workflow for articles'
],
'places' => [ 'places' => [
'draft', 'draft',
'wait_for_journalist', 'wait_for_journalist',

View File

@ -35,6 +35,10 @@
<framework:from>approved_by_spellchecker</framework:from> <framework:from>approved_by_spellchecker</framework:from>
<framework:to>published</framework:to> <framework:to>published</framework:to>
</framework:transition> </framework:transition>
<framework:metadata>
<framework:title>article workflow</framework:title>
<framework:description>workflow for articles</framework:description>
</framework:metadata>
</framework:workflow> </framework:workflow>
<framework:workflow name="pull_request"> <framework:workflow name="pull_request">

View File

@ -5,6 +5,9 @@ framework:
supports: supports:
- Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest - Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
initial_marking: [draft] initial_marking: [draft]
metadata:
title: article workflow
description: workflow for articles
places: places:
# simple format # simple format
- draft - draft

View File

@ -55,6 +55,7 @@ use Symfony\Component\Validator\DependencyInjection\AddConstraintValidatorsPass;
use Symfony\Component\Validator\Mapping\Loader\PropertyInfoLoader; use Symfony\Component\Validator\Mapping\Loader\PropertyInfoLoader;
use Symfony\Component\Validator\Util\LegacyTranslatorProxy; use Symfony\Component\Validator\Util\LegacyTranslatorProxy;
use Symfony\Component\Workflow; use Symfony\Component\Workflow;
use Symfony\Component\Workflow\Metadata\InMemoryMetadataStore;
use Symfony\Contracts\Translation\TranslatorInterface; use Symfony\Contracts\Translation\TranslatorInterface;
abstract class FrameworkExtensionTest extends TestCase abstract class FrameworkExtensionTest extends TestCase
@ -242,6 +243,12 @@ abstract class FrameworkExtensionTest extends TestCase
); );
$this->assertCount(4, $workflowDefinition->getArgument(1)); $this->assertCount(4, $workflowDefinition->getArgument(1));
$this->assertSame(['draft'], $workflowDefinition->getArgument(2)); $this->assertSame(['draft'], $workflowDefinition->getArgument(2));
$metadataStoreDefinition = $workflowDefinition->getArgument(3);
$this->assertSame(InMemoryMetadataStore::class, $metadataStoreDefinition->getClass());
$this->assertSame([
'title' => 'article workflow',
'description' => 'workflow for articles',
], $metadataStoreDefinition->getArgument(0));
$this->assertTrue($container->hasDefinition('state_machine.pull_request'), 'State machine is registered as a service'); $this->assertTrue($container->hasDefinition('state_machine.pull_request'), 'State machine is registered as a service');
$this->assertSame('state_machine.abstract', $container->getDefinition('state_machine.pull_request')->getParent()); $this->assertSame('state_machine.abstract', $container->getDefinition('state_machine.pull_request')->getParent());
@ -266,7 +273,7 @@ abstract class FrameworkExtensionTest extends TestCase
$metadataStoreDefinition = $stateMachineDefinition->getArgument(3); $metadataStoreDefinition = $stateMachineDefinition->getArgument(3);
$this->assertInstanceOf(Definition::class, $metadataStoreDefinition); $this->assertInstanceOf(Definition::class, $metadataStoreDefinition);
$this->assertSame(Workflow\Metadata\InMemoryMetadataStore::class, $metadataStoreDefinition->getClass()); $this->assertSame(InMemoryMetadataStore::class, $metadataStoreDefinition->getClass());
$workflowMetadata = $metadataStoreDefinition->getArgument(0); $workflowMetadata = $metadataStoreDefinition->getArgument(0);
$this->assertSame(['title' => 'workflow title'], $workflowMetadata); $this->assertSame(['title' => 'workflow title'], $workflowMetadata);