diff --git a/tests/Integration/App/FormFlowBasic/Form/Data/MultistepDto.php b/tests/Integration/App/FormFlowBasic/Form/Data/MultistepDto.php index ec7f710..3a53235 100644 --- a/tests/Integration/App/FormFlowBasic/Form/Data/MultistepDto.php +++ b/tests/Integration/App/FormFlowBasic/Form/Data/MultistepDto.php @@ -11,7 +11,10 @@ class MultistepDto public ?string $field11 = null; // step 2 + #[Assert\NotBlank(groups: ['step2'])] public ?string $field21 = null; + + #[Assert\NotBlank(groups: ['step2'])] public ?string $field22 = null; // step 3 diff --git a/tests/Integration/App/FormFlowBasic/Form/Type/Step2Type.php b/tests/Integration/App/FormFlowBasic/Form/Type/Step2Type.php index ada6113..ac159ed 100644 --- a/tests/Integration/App/FormFlowBasic/Form/Type/Step2Type.php +++ b/tests/Integration/App/FormFlowBasic/Form/Type/Step2Type.php @@ -5,6 +5,7 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; +use Yceruto\FormFlowBundle\Form\Extension\Core\Type\FormFlowActionType; use Yceruto\FormFlowBundle\Tests\Integration\App\FormFlowBasic\Form\Data\MultistepDto; class Step2Type extends AbstractType @@ -13,6 +14,11 @@ public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('field21'); $builder->add('field22'); + $builder->add('skip', FormFlowActionType::class, [ + 'action' => 'next', + 'label' => 'Skip', + 'clear_submission' => true, + ]); } public function configureOptions(OptionsResolver $resolver): void diff --git a/tests/Integration/App/FormFlowBasic/Output/step2.html b/tests/Integration/App/FormFlowBasic/Output/step2.html index e5cd902..bdf8c2b 100644 --- a/tests/Integration/App/FormFlowBasic/Output/step2.html +++ b/tests/Integration/App/FormFlowBasic/Output/step2.html @@ -1 +1 @@ -
+
diff --git a/tests/Integration/FormFlowBasicTest.php b/tests/Integration/FormFlowBasicTest.php index 4435a19..d06df33 100644 --- a/tests/Integration/FormFlowBasicTest.php +++ b/tests/Integration/FormFlowBasicTest.php @@ -133,6 +133,34 @@ public function testGoBackToEarlierStep(): void self::assertSame('/basic/success', $client->getInternalResponse()->getHeader('Location')); } + public function testSkipStep(): void + { + $client = self::createClient(); + $crawler = $client->request('GET', '/basic'); + + $crawler = $client->submit($crawler->selectButton('Next')->form(), [ + 'multistep[step1][field11]' => 'foo', + 'multistep[navigator][next]' => '', + ]); + + self::assertStringContainsString('>Step2<', $crawler->html()); + + $crawler = $client->submit($crawler->selectButton('Skip')->form(), [ + 'multistep[step2][skip]' => '', + ]); + + self::assertSame(200, $client->getInternalResponse()->getStatusCode()); + self::assertStringContainsString('>Step3<', $crawler->html()); + + $crawler = $client->submit($crawler->selectButton('Back')->form(), [ + 'multistep[navigator][back]' => '', + ]); + + self::assertStringContainsString('>Step2<', $crawler->html()); + self::assertStringNotContainsString('value="foo"', $crawler->html()); + self::assertStringNotContainsString('value="bar"', $crawler->html()); + } + public function testValidationError(): void { $client = self::createClient();