Files
archived-form/Tests/FormErrorIteratorTest.php
2025-08-04 09:05:15 +02:00

62 lines
2.1 KiB
PHP

<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\Tests;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\Form\FormBuilder;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\FormErrorIterator;
use Symfony\Component\Form\FormFactory;
use Symfony\Component\Form\FormRegistry;
use Symfony\Component\Form\ResolvedFormTypeFactory;
use Symfony\Component\Validator\ConstraintViolation;
class FormErrorIteratorTest extends TestCase
{
#[DataProvider('findByCodesProvider')]
public function testFindByCodes($code, $violationsCount)
{
$formBuilder = new FormBuilder(
'form',
null,
new EventDispatcher(),
new FormFactory(new FormRegistry([], new ResolvedFormTypeFactory())),
[]
);
$form = $formBuilder->getForm();
$cause = new ConstraintViolation('Error 1!', null, [], null, '', null, null, 'code1');
$form->addError(new FormError('Error 1!', null, [], null, $cause));
$cause = new ConstraintViolation('Error 2!', null, [], null, '', null, null, 'code1');
$form->addError(new FormError('Error 2!', null, [], null, $cause));
$cause = new ConstraintViolation('Error 3!', null, [], null, '', null, null, 'code2');
$form->addError(new FormError('Error 3!', null, [], null, $cause));
$formErrors = $form->getErrors();
$specificFormErrors = $formErrors->findByCodes($code);
$this->assertInstanceOf(FormErrorIterator::class, $specificFormErrors);
$this->assertCount($violationsCount, $specificFormErrors);
}
public static function findByCodesProvider(): array
{
return [
['code1', 2],
[['code1', 'code2'], 3],
['code3', 0],
];
}
}