Upgrade 1-11.38

This commit is contained in:
xesmyd
2026-03-30 14:10:30 +02:00
parent f2a7e6d1fc
commit ac648ef29d
24665 changed files with 69682 additions and 2205004 deletions
@@ -41,8 +41,6 @@ class PropertyPathMapperTest extends TestCase
}
/**
* @param $path
*
* @return \PHPUnit_Framework_MockObject_MockObject
*/
private function getPropertyPath($path)
@@ -181,7 +181,12 @@ class DateIntervalToArrayTransformerTest extends DateIntervalTestCase
'minutes' => '',
'seconds' => '6',
);
$this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}(TransformationFailedException::class, 'This amount of "minutes" is invalid');
if (method_exists($this, 'expectException')) {
$this->expectException(TransformationFailedException::class);
$this->expectExceptionMessage('This amount of "minutes" is invalid');
} else {
$this->setExpectedException(TransformationFailedException::class, 'This amount of "minutes" is invalid');
}
$transformer->reverseTransform($input);
}
@@ -191,7 +196,12 @@ class DateIntervalToArrayTransformerTest extends DateIntervalTestCase
$input = array(
'invert' => '1',
);
$this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}(TransformationFailedException::class, 'The value of "invert" must be boolean');
if (method_exists($this, 'expectException')) {
$this->expectException(TransformationFailedException::class);
$this->expectExceptionMessage('The value of "invert" must be boolean');
} else {
$this->setExpectedException(TransformationFailedException::class, 'The value of "invert" must be boolean');
}
$transformer->reverseTransform($input);
}
@@ -1,22 +0,0 @@
<?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\Extension\Core\DataTransformer;
use PHPUnit\Framework\TestCase;
abstract class DateTimeTestCase extends TestCase
{
public static function assertDateTimeEquals(\DateTime $expected, \DateTime $actual)
{
self::assertEquals($expected->format('U'), $actual->format('U'));
}
}
@@ -11,9 +11,10 @@
namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToArrayTransformer;
class DateTimeToArrayTransformerTest extends DateTimeTestCase
class DateTimeToArrayTransformerTest extends TestCase
{
public function testTransform()
{
@@ -160,7 +161,7 @@ class DateTimeToArrayTransformerTest extends DateTimeTestCase
$output = new \DateTime('2010-02-03 04:05:06 UTC');
$this->assertDateTimeEquals($output, $transformer->reverseTransform($input));
$this->assertEquals($output, $transformer->reverseTransform($input));
}
public function testReverseTransformWithSomeZero()
@@ -178,7 +179,7 @@ class DateTimeToArrayTransformerTest extends DateTimeTestCase
$output = new \DateTime('2010-02-03 04:00:00 UTC');
$this->assertDateTimeEquals($output, $transformer->reverseTransform($input));
$this->assertEquals($output, $transformer->reverseTransform($input));
}
public function testReverseTransformCompletelyEmpty()
@@ -323,7 +324,7 @@ class DateTimeToArrayTransformerTest extends DateTimeTestCase
$output = new \DateTime('2010-02-03 04:05:06 Asia/Hong_Kong');
$output->setTimezone(new \DateTimeZone('America/New_York'));
$this->assertDateTimeEquals($output, $transformer->reverseTransform($input));
$this->assertEquals($output, $transformer->reverseTransform($input));
}
public function testReverseTransformToDifferentTimezone()
@@ -342,7 +343,7 @@ class DateTimeToArrayTransformerTest extends DateTimeTestCase
$output = new \DateTime('2010-02-03 04:05:06 UTC');
$output->setTimezone(new \DateTimeZone('Asia/Hong_Kong'));
$this->assertDateTimeEquals($output, $transformer->reverseTransform($input));
$this->assertEquals($output, $transformer->reverseTransform($input));
}
/**
@@ -11,10 +11,11 @@
namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToLocalizedStringTransformer;
use Symfony\Component\Intl\Util\IntlTestHelper;
class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
class DateTimeToLocalizedStringTransformerTest extends TestCase
{
protected $dateTime;
protected $dateTimeWithoutSeconds;
@@ -223,7 +224,7 @@ class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
{
$transformer = new DateTimeToLocalizedStringTransformer('UTC', 'UTC', null, \IntlDateFormatter::FULL);
$this->assertDateTimeEquals($this->dateTime, $transformer->reverseTransform('03.02.2010, 04:05:06 GMT+00:00'));
$this->assertEquals($this->dateTime, $transformer->reverseTransform('03.02.2010, 04:05:06 GMT+00:00'));
}
public function testReverseTransformFromDifferentLocale()
@@ -232,7 +233,7 @@ class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
$transformer = new DateTimeToLocalizedStringTransformer('UTC', 'UTC');
$this->assertDateTimeEquals($this->dateTimeWithoutSeconds, $transformer->reverseTransform('Feb 3, 2010, 04:05 AM'));
$this->assertEquals($this->dateTimeWithoutSeconds, $transformer->reverseTransform('Feb 3, 2010, 04:05 AM'));
}
public function testReverseTransformWithDifferentTimezones()
@@ -242,7 +243,7 @@ class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
$dateTime = new \DateTime('2010-02-03 04:05:00 Asia/Hong_Kong');
$dateTime->setTimezone(new \DateTimeZone('America/New_York'));
$this->assertDateTimeEquals($dateTime, $transformer->reverseTransform('03.02.2010, 04:05'));
$this->assertEquals($dateTime, $transformer->reverseTransform('03.02.2010, 04:05'));
}
public function testReverseTransformOnlyDateWithDifferentTimezones()
@@ -251,21 +252,21 @@ class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
$dateTime = new \DateTime('2017-01-10 11:00', new \DateTimeZone('Europe/Berlin'));
$this->assertDateTimeEquals($dateTime, $transformer->reverseTransform('2017-01-10'));
$this->assertEquals($dateTime, $transformer->reverseTransform('2017-01-10'));
}
public function testReverseTransformWithDifferentPatterns()
{
$transformer = new DateTimeToLocalizedStringTransformer('UTC', 'UTC', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL, \IntlDateFormatter::GREGORIAN, 'MM*yyyy*dd HH|mm|ss');
$this->assertDateTimeEquals($this->dateTime, $transformer->reverseTransform('02*2010*03 04|05|06'));
$this->assertEquals($this->dateTime, $transformer->reverseTransform('02*2010*03 04|05|06'));
}
public function testReverseTransformDateOnlyWithDstIssue()
{
$transformer = new DateTimeToLocalizedStringTransformer('Europe/Rome', 'Europe/Rome', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL, \IntlDateFormatter::GREGORIAN, 'dd/MM/yyyy');
$this->assertDateTimeEquals(
$this->assertEquals(
new \DateTime('1978-05-28', new \DateTimeZone('Europe/Rome')),
$transformer->reverseTransform('28/05/1978')
);
@@ -275,7 +276,7 @@ class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
{
$transformer = new DateTimeToLocalizedStringTransformer('Europe/Rome', 'Europe/Rome', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL, \IntlDateFormatter::GREGORIAN, "'day': dd 'month': MM 'year': yyyy");
$this->assertDateTimeEquals(
$this->assertEquals(
new \DateTime('1978-05-28', new \DateTimeZone('Europe/Rome')),
$transformer->reverseTransform('day: 28 month: 05 year: 1978')
);
@@ -329,7 +330,7 @@ class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
{
$transformer = new DateTimeToLocalizedStringTransformer('UTC', 'UTC', \IntlDateFormatter::SHORT);
$this->assertDateTimeEquals($this->dateTimeWithoutSeconds, $transformer->reverseTransform('31.04.10 04:05'));
$this->assertEquals($this->dateTimeWithoutSeconds, $transformer->reverseTransform('31.04.10 04:05'));
}
/**
@@ -340,4 +341,22 @@ class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
$transformer = new DateTimeToLocalizedStringTransformer('UTC', 'UTC');
$transformer->reverseTransform('1789-07-14');
}
/**
* @expectedException \Symfony\Component\Form\Exception\TransformationFailedException
*/
public function testReverseTransformFiveDigitYears()
{
$transformer = new DateTimeToLocalizedStringTransformer('UTC', 'UTC', null, null, \IntlDateFormatter::GREGORIAN, 'yyyy-MM-dd');
$transformer->reverseTransform('20107-03-21');
}
/**
* @expectedException \Symfony\Component\Form\Exception\TransformationFailedException
*/
public function testReverseTransformFiveDigitYearsWithTimestamp()
{
$transformer = new DateTimeToLocalizedStringTransformer('UTC', 'UTC', null, null, \IntlDateFormatter::GREGORIAN, 'yyyy-MM-dd HH:mm:ss');
$transformer->reverseTransform('20107-03-21 12:34:56');
}
}
@@ -11,9 +11,10 @@
namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToRfc3339Transformer;
class DateTimeToRfc3339TransformerTest extends DateTimeTestCase
class DateTimeToRfc3339TransformerTest extends TestCase
{
protected $dateTime;
protected $dateTimeWithoutSeconds;
@@ -106,9 +107,9 @@ class DateTimeToRfc3339TransformerTest extends DateTimeTestCase
$transformer = new DateTimeToRfc3339Transformer($toTz, $fromTz);
if (null !== $to) {
$this->assertDateTimeEquals(new \DateTime($to), $transformer->reverseTransform($from));
$this->assertEquals(new \DateTime($to), $transformer->reverseTransform($from));
} else {
$this->assertSame($to, $transformer->reverseTransform($from));
$this->assertNull($transformer->reverseTransform($from));
}
}
@@ -11,9 +11,10 @@
namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToStringTransformer;
class DateTimeToStringTransformerTest extends DateTimeTestCase
class DateTimeToStringTransformerTest extends TestCase
{
public function dataProvider()
{
@@ -124,7 +125,7 @@ class DateTimeToStringTransformerTest extends DateTimeTestCase
$output = new \DateTime($output);
$this->assertDateTimeEquals($output, $reverseTransformer->reverseTransform($input));
$this->assertEquals($output, $reverseTransformer->reverseTransform($input));
}
public function testReverseTransformEmpty()
@@ -142,7 +143,7 @@ class DateTimeToStringTransformerTest extends DateTimeTestCase
$input = $output->format('Y-m-d H:i:s');
$output->setTimezone(new \DateTimeZone('America/New_York'));
$this->assertDateTimeEquals($output, $reverseTransformer->reverseTransform($input));
$this->assertEquals($output, $reverseTransformer->reverseTransform($input));
}
public function testReverseTransformExpectsString()
@@ -11,9 +11,10 @@
namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToTimestampTransformer;
class DateTimeToTimestampTransformerTest extends DateTimeTestCase
class DateTimeToTimestampTransformerTest extends TestCase
{
public function testTransform()
{
@@ -83,7 +84,7 @@ class DateTimeToTimestampTransformerTest extends DateTimeTestCase
$output = new \DateTime('2010-02-03 04:05:06 UTC');
$input = $output->format('U');
$this->assertDateTimeEquals($output, $reverseTransformer->reverseTransform($input));
$this->assertEquals($output, $reverseTransformer->reverseTransform($input));
}
public function testReverseTransformEmpty()
@@ -101,7 +102,7 @@ class DateTimeToTimestampTransformerTest extends DateTimeTestCase
$input = $output->format('U');
$output->setTimezone(new \DateTimeZone('Asia/Hong_Kong'));
$this->assertDateTimeEquals($output, $reverseTransformer->reverseTransform($input));
$this->assertEquals($output, $reverseTransformer->reverseTransform($input));
}
public function testReverseTransformExpectsValidTimestamp()
@@ -72,4 +72,12 @@ class MoneyToLocalizedStringTransformerTest extends TestCase
$this->assertNull($transformer->reverseTransform(''));
}
public function testFloatToIntConversionMismatchOnReversTransform()
{
$transformer = new MoneyToLocalizedStringTransformer(null, null, null, 100);
IntlTestHelper::requireFullIntl($this, false);
\Locale::setDefault('de_AT');
$this->assertSame(3655, (int) $transformer->reverseTransform('36,55'));
}
}
@@ -119,4 +119,187 @@ class PercentToLocalizedStringTransformerTest extends TestCase
$transformer->reverseTransform(1);
}
public function testDecimalSeparatorMayBeDotIfGroupingSeparatorIsNotDot()
{
IntlTestHelper::requireFullIntl($this, '4.8.1.1');
\Locale::setDefault('fr');
$transformer = new PercentToLocalizedStringTransformer(1, 'integer');
// completely valid format
$this->assertEquals(1234.5, $transformer->reverseTransform('1 234,5'));
// accept dots
$this->assertEquals(1234.5, $transformer->reverseTransform('1 234.5'));
// omit group separator
$this->assertEquals(1234.5, $transformer->reverseTransform('1234,5'));
$this->assertEquals(1234.5, $transformer->reverseTransform('1234.5'));
}
/**
* @expectedException \Symfony\Component\Form\Exception\TransformationFailedException
*/
public function testDecimalSeparatorMayNotBeDotIfGroupingSeparatorIsDot()
{
// Since we test against "de_DE", we need the full implementation
IntlTestHelper::requireFullIntl($this, '4.8.1.1');
\Locale::setDefault('de_DE');
$transformer = new PercentToLocalizedStringTransformer(1, 'integer');
$transformer->reverseTransform('1.234.5');
}
/**
* @expectedException \Symfony\Component\Form\Exception\TransformationFailedException
*/
public function testDecimalSeparatorMayNotBeDotIfGroupingSeparatorIsDotWithNoGroupSep()
{
// Since we test against "de_DE", we need the full implementation
IntlTestHelper::requireFullIntl($this, '4.8.1.1');
\Locale::setDefault('de_DE');
$transformer = new PercentToLocalizedStringTransformer(1, 'integer');
$transformer->reverseTransform('1234.5');
}
public function testDecimalSeparatorMayBeDotIfGroupingSeparatorIsDotButNoGroupingUsed()
{
// Since we test against other locales, we need the full implementation
IntlTestHelper::requireFullIntl($this, false);
\Locale::setDefault('fr');
$transformer = new PercentToLocalizedStringTransformer(1, 'integer');
$this->assertEquals(1234.5, $transformer->reverseTransform('1234,5'));
$this->assertEquals(1234.5, $transformer->reverseTransform('1234.5'));
}
public function testDecimalSeparatorMayBeCommaIfGroupingSeparatorIsNotComma()
{
// Since we test against other locales, we need the full implementation
IntlTestHelper::requireFullIntl($this, '4.8.1.1');
\Locale::setDefault('bg');
$transformer = new PercentToLocalizedStringTransformer(1, 'integer');
// completely valid format
$this->assertEquals(1234.5, $transformer->reverseTransform('1 234.5'));
// accept commas
$this->assertEquals(1234.5, $transformer->reverseTransform('1 234,5'));
// omit group separator
$this->assertEquals(1234.5, $transformer->reverseTransform('1234.5'));
$this->assertEquals(1234.5, $transformer->reverseTransform('1234,5'));
}
/**
* @expectedException \Symfony\Component\Form\Exception\TransformationFailedException
*/
public function testDecimalSeparatorMayNotBeCommaIfGroupingSeparatorIsComma()
{
IntlTestHelper::requireFullIntl($this, '4.8.1.1');
$transformer = new PercentToLocalizedStringTransformer(1, 'integer');
$transformer->reverseTransform('1,234,5');
}
/**
* @expectedException \Symfony\Component\Form\Exception\TransformationFailedException
*/
public function testDecimalSeparatorMayNotBeCommaIfGroupingSeparatorIsCommaWithNoGroupSep()
{
IntlTestHelper::requireFullIntl($this, '4.8.1.1');
$transformer = new PercentToLocalizedStringTransformer(1, 'integer');
$transformer->reverseTransform('1234,5');
}
public function testDecimalSeparatorMayBeCommaIfGroupingSeparatorIsCommaButNoGroupingUsed()
{
$formatter = new \NumberFormatter(\Locale::getDefault(), \NumberFormatter::DECIMAL);
$formatter->setAttribute(\NumberFormatter::FRACTION_DIGITS, 1);
$formatter->setAttribute(\NumberFormatter::GROUPING_USED, false);
$transformer = $this->getMockBuilder('Symfony\Component\Form\Extension\Core\DataTransformer\PercentToLocalizedStringTransformer')
->setMethods(array('getNumberFormatter'))
->setConstructorArgs(array(1, 'integer'))
->getMock();
$transformer->expects($this->any())
->method('getNumberFormatter')
->willReturn($formatter);
$this->assertEquals(1234.5, $transformer->reverseTransform('1234,5'));
$this->assertEquals(1234.5, $transformer->reverseTransform('1234.5'));
}
/**
* @expectedException \Symfony\Component\Form\Exception\TransformationFailedException
*/
public function testReverseTransformDisallowsLeadingExtraCharacters()
{
$transformer = new PercentToLocalizedStringTransformer();
$transformer->reverseTransform('foo123');
}
/**
* @expectedException \Symfony\Component\Form\Exception\TransformationFailedException
* @expectedExceptionMessage The number contains unrecognized characters: "foo3"
*/
public function testReverseTransformDisallowsCenteredExtraCharacters()
{
$transformer = new PercentToLocalizedStringTransformer();
$transformer->reverseTransform('12foo3');
}
/**
* @expectedException \Symfony\Component\Form\Exception\TransformationFailedException
* @expectedExceptionMessage The number contains unrecognized characters: "foo8"
* @requires extension mbstring
*/
public function testReverseTransformDisallowsCenteredExtraCharactersMultibyte()
{
// Since we test against other locales, we need the full implementation
IntlTestHelper::requireFullIntl($this, false);
\Locale::setDefault('ru');
$transformer = new PercentToLocalizedStringTransformer();
$transformer->reverseTransform("12\xc2\xa0345,67foo8");
}
/**
* @expectedException \Symfony\Component\Form\Exception\TransformationFailedException
* @expectedExceptionMessage The number contains unrecognized characters: "foo"
*/
public function testReverseTransformDisallowsTrailingExtraCharacters()
{
$transformer = new PercentToLocalizedStringTransformer();
$transformer->reverseTransform('123foo');
}
/**
* @expectedException \Symfony\Component\Form\Exception\TransformationFailedException
* @expectedExceptionMessage The number contains unrecognized characters: "foo"
* @requires extension mbstring
*/
public function testReverseTransformDisallowsTrailingExtraCharactersMultibyte()
{
// Since we test against other locales, we need the full implementation
IntlTestHelper::requireFullIntl($this, false);
\Locale::setDefault('ru');
$transformer = new PercentToLocalizedStringTransformer();
$transformer->reverseTransform("12\xc2\xa0345,678foo");
}
}
@@ -196,7 +196,7 @@ class ChoiceTypeTest extends BaseTypeTest
'choices' => $this->choices,
));
$this->assertTrue(isset($form['placeholder']));
$this->assertArrayHasKey('placeholder', $form);
$this->assertCount(count($this->choices) + 1, $form, 'Each choice should become a new field');
}
@@ -209,7 +209,7 @@ class ChoiceTypeTest extends BaseTypeTest
'choices' => $this->choices,
));
$this->assertFalse(isset($form['placeholder']));
$this->assertArrayNotHasKey('placeholder', $form);
$this->assertCount(count($this->choices), $form, 'Each choice should become a new field');
}
@@ -222,7 +222,7 @@ class ChoiceTypeTest extends BaseTypeTest
'choices' => $this->choices,
));
$this->assertFalse(isset($form['placeholder']));
$this->assertArrayNotHasKey('placeholder', $form);
$this->assertCount(count($this->choices), $form, 'Each choice should become a new field');
}
@@ -238,7 +238,7 @@ class ChoiceTypeTest extends BaseTypeTest
),
));
$this->assertFalse(isset($form['placeholder']));
$this->assertArrayNotHasKey('placeholder', $form);
$this->assertCount(2, $form, 'Each choice should become a new field');
}
@@ -295,7 +295,7 @@ class ChoiceTypeTest extends BaseTypeTest
'placeholder' => 'Select an option',
));
$this->assertTrue(isset($form['placeholder']), 'Placeholder should be set');
$this->assertArrayHasKey('placeholder', $form, 'Placeholder should be set');
$this->assertCount(3, $form, 'Each choice should become a new field, placeholder included');
$view = $form->createView();
@@ -319,7 +319,7 @@ class ChoiceTypeTest extends BaseTypeTest
'placeholder' => 'Select an option',
));
$this->assertTrue(isset($form['placeholder']), 'Placeholder should be set');
$this->assertArrayHasKey('placeholder', $form, 'Placeholder should be set');
$this->assertCount(3, $form, 'Each choice should become a new field, placeholder included');
$view = $form->createView();
@@ -48,7 +48,7 @@ class CollectionTypeTest extends BaseTypeTest
$form->setData(array('foo@baz.com'));
$this->assertInstanceOf('Symfony\Component\Form\Form', $form[0]);
$this->assertFalse(isset($form[1]));
$this->assertArrayNotHasKey(1, $form);
$this->assertCount(1, $form);
$this->assertEquals('foo@baz.com', $form[0]->getData());
$formAttrs0 = $form[0]->getConfig()->getOption('attr');
@@ -227,7 +227,7 @@ class CollectionTypeTest extends BaseTypeTest
));
$data = $form->getData();
$this->assertFalse(isset($data['__name__']));
$this->assertArrayNotHasKey('__name__', $data);
}
public function testGetDataDoesNotContainsPrototypeNameAfterDataAreSet()
@@ -240,7 +240,7 @@ class CollectionTypeTest extends BaseTypeTest
$form->setData(array('foobar.png'));
$data = $form->getData();
$this->assertFalse(isset($data['__name__']));
$this->assertArrayNotHasKey('__name__', $data);
}
public function testPrototypeNameOption()
@@ -49,7 +49,7 @@ class DateTimeTypeTest extends BaseTypeTest
$dateTime = new \DateTime('2010-06-02 03:04:00 UTC');
$this->assertDateTimeEquals($dateTime, $form->getData());
$this->assertEquals($dateTime, $form->getData());
}
public function testSubmitString()
@@ -133,7 +133,7 @@ class DateTimeTypeTest extends BaseTypeTest
$form->submit($input);
$this->assertDateTimeEquals(new \DateTime('2010-06-02 03:00:00 UTC'), $form->getData());
$this->assertEquals(new \DateTime('2010-06-02 03:00:00 UTC'), $form->getData());
}
public function testSubmitWithSeconds()
@@ -165,7 +165,7 @@ class DateTimeTypeTest extends BaseTypeTest
$form->submit($input);
$this->assertDateTimeEquals(new \DateTime('2010-06-02 03:04:05 UTC'), $form->getData());
$this->assertEquals(new \DateTime('2010-06-02 03:04:05 UTC'), $form->getData());
}
public function testSubmitDifferentTimezones()
@@ -215,7 +215,7 @@ class DateTimeTypeTest extends BaseTypeTest
$outputTime->setTimezone(new \DateTimeZone('America/New_York'));
$this->assertDateTimeEquals($outputTime, $form->getData());
$this->assertEquals($outputTime, $form->getData());
$this->assertEquals('2010-06-02T03:04:00-10:00', $form->getViewData());
}
@@ -266,7 +266,7 @@ class DateTimeTypeTest extends BaseTypeTest
'time' => '03:04',
));
$this->assertDateTimeEquals($dateTime, $form->getData());
$this->assertEquals($dateTime, $form->getData());
}
public function testInitializeWithDateTime()
@@ -419,7 +419,7 @@ class DateTimeTypeTest extends BaseTypeTest
))
->createView();
$this->assertFalse(isset($view->vars['type']));
$this->assertArrayNotHasKey('type', $view->vars);
}
public function testDontPassHtml5TypeIfNotHtml5Format()
@@ -430,7 +430,7 @@ class DateTimeTypeTest extends BaseTypeTest
))
->createView();
$this->assertFalse(isset($view->vars['type']));
$this->assertArrayNotHasKey('type', $view->vars);
}
public function testDontPassHtml5TypeIfNotSingleText()
@@ -440,7 +440,7 @@ class DateTimeTypeTest extends BaseTypeTest
))
->createView();
$this->assertFalse(isset($view->vars['type']));
$this->assertArrayNotHasKey('type', $view->vars);
}
public function testDateTypeChoiceErrorsBubbleUp()
@@ -64,7 +64,7 @@ class DateTypeTest extends BaseTypeTest
$form->submit('2010-06-02');
$this->assertDateTimeEquals(new \DateTime('2010-06-02 UTC'), $form->getData());
$this->assertEquals(new \DateTime('2010-06-02 UTC'), $form->getData());
$this->assertEquals('2010-06-02', $form->getViewData());
}
@@ -80,7 +80,7 @@ class DateTypeTest extends BaseTypeTest
$form->submit('2010');
$this->assertDateTimeEquals(new \DateTime('2010-01-01 UTC'), $form->getData());
$this->assertEquals(new \DateTime('2010-01-01 UTC'), $form->getData());
$this->assertEquals('2010', $form->getViewData());
}
@@ -101,7 +101,7 @@ class DateTypeTest extends BaseTypeTest
$form->submit('2.6.2010');
$this->assertDateTimeEquals(new \DateTime('2010-06-02 UTC'), $form->getData());
$this->assertEquals(new \DateTime('2010-06-02 UTC'), $form->getData());
$this->assertEquals('02.06.2010', $form->getViewData());
}
@@ -194,7 +194,7 @@ class DateTypeTest extends BaseTypeTest
$dateTime = new \DateTime('2010-06-02 UTC');
$this->assertDateTimeEquals($dateTime, $form->getData());
$this->assertEquals($dateTime, $form->getData());
$this->assertEquals($text, $form->getViewData());
}
@@ -217,7 +217,7 @@ class DateTypeTest extends BaseTypeTest
$dateTime = new \DateTime('2010-06-02 UTC');
$this->assertDateTimeEquals($dateTime, $form->getData());
$this->assertEquals($dateTime, $form->getData());
$this->assertEquals($text, $form->getViewData());
}
@@ -254,7 +254,7 @@ class DateTypeTest extends BaseTypeTest
$form->submit('06*2010*02');
$this->assertDateTimeEquals(new \DateTime('2010-06-02 UTC'), $form->getData());
$this->assertEquals(new \DateTime('2010-06-02 UTC'), $form->getData());
$this->assertEquals('06*2010*02', $form->getViewData());
}
@@ -468,7 +468,7 @@ class DateTypeTest extends BaseTypeTest
// 2010-06-02 00:00:00 UTC
// 2010-06-01 20:00:00 UTC-4
$this->assertDateTimeEquals($dateTime, $form->getData());
$this->assertEquals($dateTime, $form->getData());
$this->assertEquals('01.06.2010', $form->getViewData());
}
@@ -678,7 +678,7 @@ class DateTypeTest extends BaseTypeTest
))
->createView();
$this->assertFalse(isset($view->vars['date_pattern']));
$this->assertArrayNotHasKey('date_pattern', $view->vars);
}
public function testDatePatternFormatWithQuotedStrings()
@@ -826,7 +826,7 @@ class DateTypeTest extends BaseTypeTest
))
->createView();
$this->assertFalse(isset($view->vars['type']));
$this->assertArrayNotHasKey('type', $view->vars);
}
public function testDontPassHtml5TypeIfNotHtml5Format()
@@ -837,7 +837,7 @@ class DateTypeTest extends BaseTypeTest
))
->createView();
$this->assertFalse(isset($view->vars['type']));
$this->assertArrayNotHasKey('type', $view->vars);
}
public function testDontPassHtml5TypeIfNotSingleText()
@@ -847,7 +847,7 @@ class DateTypeTest extends BaseTypeTest
))
->createView();
$this->assertFalse(isset($view->vars['type']));
$this->assertArrayNotHasKey('type', $view->vars);
}
public function provideCompoundWidgets()
+101 -36
View File
@@ -11,6 +11,11 @@
namespace Symfony\Component\Form\Tests\Extension\Core\Type;
use Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationRequestHandler;
use Symfony\Component\Form\NativeRequestHandler;
use Symfony\Component\Form\RequestHandlerInterface;
use Symfony\Component\HttpFoundation\File\UploadedFile;
class FileTypeTest extends BaseTypeTest
{
const TESTED_TYPE = 'Symfony\Component\Form\Extension\Core\Type\FileType';
@@ -29,40 +34,49 @@ class FileTypeTest extends BaseTypeTest
$this->assertSame($data, $form->getData());
}
public function testSubmit()
/**
* @dataProvider requestHandlerProvider
*/
public function testSubmit(RequestHandlerInterface $requestHandler)
{
$form = $this->factory->createBuilder(static::TESTED_TYPE)->getForm();
$data = $this->createUploadedFileMock('abcdef', 'original.jpg', true);
$form = $this->factory->createBuilder(static::TESTED_TYPE)->setRequestHandler($requestHandler)->getForm();
$data = $this->createUploadedFileMock($requestHandler, __DIR__.'/../../../Fixtures/foo', 'foo.jpg');
$form->submit($data);
$this->assertSame($data, $form->getData());
}
public function testSetDataMultiple()
/**
* @dataProvider requestHandlerProvider
*/
public function testSetDataMultiple(RequestHandlerInterface $requestHandler)
{
$form = $this->factory->createBuilder(static::TESTED_TYPE, null, array(
'multiple' => true,
))->getForm();
))->setRequestHandler($requestHandler)->getForm();
$data = array(
$this->createUploadedFileMock('abcdef', 'first.jpg', true),
$this->createUploadedFileMock('zyxwvu', 'second.jpg', true),
$this->createUploadedFileMock($requestHandler, __DIR__.'/../../../Fixtures/foo', 'foo.jpg'),
$this->createUploadedFileMock($requestHandler, __DIR__.'/../../../Fixtures/foo2', 'foo2.jpg'),
);
$form->setData($data);
$this->assertSame($data, $form->getData());
}
public function testSubmitMultiple()
/**
* @dataProvider requestHandlerProvider
*/
public function testSubmitMultiple(RequestHandlerInterface $requestHandler)
{
$form = $this->factory->createBuilder(static::TESTED_TYPE, null, array(
'multiple' => true,
))->getForm();
))->setRequestHandler($requestHandler)->getForm();
$data = array(
$this->createUploadedFileMock('abcdef', 'first.jpg', true),
$this->createUploadedFileMock('zyxwvu', 'second.jpg', true),
$this->createUploadedFileMock($requestHandler, __DIR__.'/../../../Fixtures/foo', 'foo.jpg'),
$this->createUploadedFileMock($requestHandler, __DIR__.'/../../../Fixtures/foo2', 'foo2.jpg'),
);
$form->submit($data);
@@ -73,11 +87,14 @@ class FileTypeTest extends BaseTypeTest
$this->assertArrayHasKey('multiple', $view->vars['attr']);
}
public function testDontPassValueToView()
/**
* @dataProvider requestHandlerProvider
*/
public function testDontPassValueToView(RequestHandlerInterface $requestHandler)
{
$form = $this->factory->create(static::TESTED_TYPE);
$form = $this->factory->createBuilder(static::TESTED_TYPE)->setRequestHandler($requestHandler)->getForm();
$form->submit(array(
'file' => $this->createUploadedFileMock('abcdef', 'original.jpg', true),
'file' => $this->createUploadedFileMock($requestHandler, __DIR__.'/../../../Fixtures/foo', 'foo.jpg'),
));
$this->assertEquals('', $form->createView()->vars['value']);
@@ -109,29 +126,77 @@ class FileTypeTest extends BaseTypeTest
$this->assertSame(array(), $form->getViewData());
}
private function createUploadedFileMock($name, $originalName, $valid)
/**
* @dataProvider requestHandlerProvider
*/
public function testSubmittedFilePathsAreDropped(RequestHandlerInterface $requestHandler)
{
$file = $this
->getMockBuilder('Symfony\Component\HttpFoundation\File\UploadedFile')
->setConstructorArgs(array(__DIR__.'/../../../Fixtures/foo', 'foo'))
->getMock()
;
$file
->expects($this->any())
->method('getBasename')
->will($this->returnValue($name))
;
$file
->expects($this->any())
->method('getClientOriginalName')
->will($this->returnValue($originalName))
;
$file
->expects($this->any())
->method('isValid')
->will($this->returnValue($valid))
;
$form = $this->factory->createBuilder(static::TESTED_TYPE)->setRequestHandler($requestHandler)->getForm();
$form->submit('file:///etc/passwd');
return $file;
$this->assertNull($form->getData());
$this->assertNull($form->getNormData());
$this->assertSame('', $form->getViewData());
}
/**
* @dataProvider requestHandlerProvider
*/
public function testMultipleSubmittedFilePathsAreDropped(RequestHandlerInterface $requestHandler)
{
$form = $this->factory
->createBuilder(static::TESTED_TYPE, null, array(
'multiple' => true,
))
->setRequestHandler($requestHandler)
->getForm();
$form->submit(array(
'file:///etc/passwd',
$this->createUploadedFileMock(new HttpFoundationRequestHandler(), __DIR__.'/../../../Fixtures/foo', 'foo.jpg'),
$this->createUploadedFileMock(new NativeRequestHandler(), __DIR__.'/../../../Fixtures/foo2', 'foo2.jpg'),
));
$this->assertCount(1, $form->getData());
}
/**
* @dataProvider requestHandlerProvider
*/
public function testSubmitNonArrayValueWhenMultiple(RequestHandlerInterface $requestHandler)
{
$form = $this->factory
->createBuilder(static::TESTED_TYPE, null, array(
'multiple' => true,
))
->setRequestHandler($requestHandler)
->getForm();
$form->submit(null);
$this->assertSame(array(), $form->getData());
$this->assertSame(array(), $form->getNormData());
$this->assertSame(array(), $form->getViewData());
}
public function requestHandlerProvider()
{
return array(
array(new HttpFoundationRequestHandler()),
array(new NativeRequestHandler()),
);
}
private function createUploadedFileMock(RequestHandlerInterface $requestHandler, $path, $originalName)
{
if ($requestHandler instanceof HttpFoundationRequestHandler) {
return new UploadedFile($path, $originalName, null, 10, null, true);
}
return array(
'name' => $originalName,
'error' => 0,
'type' => 'text/plain',
'tmp_name' => $path,
'size' => 10,
);
}
}
@@ -43,7 +43,7 @@ class MoneyTypeTest extends BaseTypeTest
$view = $this->factory->create(static::TESTED_TYPE, null, array('currency' => 'JPY'))
->createView();
$this->assertTrue((bool) strstr($view->vars['money_pattern'], '¥'));
$this->assertSame('¥ {{ widget }}', $view->vars['money_pattern']);
}
// https://github.com/symfony/symfony/issues/5458
@@ -62,4 +62,12 @@ class MoneyTypeTest extends BaseTypeTest
{
parent::testSubmitNull($expected, $norm, '');
}
public function testMoneyPatternWithoutCurrency()
{
$view = $this->factory->create(static::TESTED_TYPE, null, array('currency' => false))
->createView();
$this->assertSame('{{ widget }}', $view->vars['money_pattern']);
}
}
@@ -315,7 +315,7 @@ class TimeTypeTest extends BaseTypeTest
'second' => (int) $outputTime->format('s'),
);
$this->assertDateTimeEquals($dateTime, $form->getData());
$this->assertEquals($dateTime, $form->getData());
$this->assertEquals($displayedData, $form->getViewData());
}
@@ -536,7 +536,7 @@ class TimeTypeTest extends BaseTypeTest
));
$view = $form->createView();
$this->assertFalse(isset($view->vars['type']));
$this->assertArrayNotHasKey('type', $view->vars);
}
public function testPassDefaultPlaceholderToViewIfNotRequired()
@@ -72,7 +72,7 @@ class FormTypeCsrfExtensionTest extends TypeTestCase
))
->createView();
$this->assertTrue(isset($view['csrf']));
$this->assertArrayHasKey('csrf', $view);
}
public function testNoCsrfProtectionByDefaultIfCompoundButNotRoot()
@@ -89,7 +89,7 @@ class FormTypeCsrfExtensionTest extends TypeTestCase
->get('form')
->createView();
$this->assertFalse(isset($view['csrf']));
$this->assertArrayNotHasKey('csrf', $view);
}
public function testNoCsrfProtectionByDefaultIfRootButNotCompound()
@@ -101,7 +101,7 @@ class FormTypeCsrfExtensionTest extends TypeTestCase
))
->createView();
$this->assertFalse(isset($view['csrf']));
$this->assertArrayNotHasKey('csrf', $view);
}
public function testCsrfProtectionCanBeDisabled()
@@ -114,7 +114,7 @@ class FormTypeCsrfExtensionTest extends TypeTestCase
))
->createView();
$this->assertFalse(isset($view['csrf']));
$this->assertArrayNotHasKey('csrf', $view);
}
public function testGenerateCsrfToken()
@@ -357,7 +357,7 @@ class FormTypeCsrfExtensionTest extends TypeTestCase
->createView()
->vars['prototype'];
$this->assertFalse(isset($prototypeView['csrf']));
$this->assertArrayNotHasKey('csrf', $prototypeView);
$this->assertCount(1, $prototypeView);
}
@@ -51,4 +51,9 @@ class HttpFoundationRequestHandlerTest extends AbstractRequestHandlerTest
{
return new UploadedFile(__DIR__.'/../../Fixtures/foo'.$suffix, 'foo'.$suffix);
}
protected function getInvalidFile()
{
return 'file:///etc/passwd';
}
}
@@ -372,6 +372,7 @@ class FormValidatorTest extends AbstractConstraintValidatorTest
->getForm();
$this->expectValidateAt(0, 'data', $object, new GroupSequence(array('group1', 'group2')));
$this->expectValidateAt(1, 'data', $object, new GroupSequence(array('group1', 'group2')));
$this->validator->validate($form, new Form());
@@ -12,21 +12,29 @@
namespace Symfony\Component\Form\Tests\Extension\Validator\Type;
use Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension;
use Symfony\Component\Form\Extension\Validator\ValidatorExtension;
use Symfony\Component\Form\Forms;
use Symfony\Component\Form\Tests\Extension\Core\Type\FormTypeTest;
use Symfony\Component\Form\Tests\Extension\Core\Type\TextTypeTest;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\GroupSequence;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\Valid;
use Symfony\Component\Validator\ConstraintViolationList;
use Symfony\Component\Validator\Validation;
class FormTypeValidatorExtensionTest extends BaseValidatorExtensionTest
{
public function testSubmitValidatesData()
{
$builder = $this->factory->createBuilder(
'Symfony\Component\Form\Extension\Core\Type\FormType',
FormTypeTest::TESTED_TYPE,
null,
array(
'validation_groups' => 'group',
)
);
$builder->add('firstName', 'Symfony\Component\Form\Extension\Core\Type\FormType');
$builder->add('firstName', FormTypeTest::TESTED_TYPE);
$form = $builder->getForm();
$this->validator->expects($this->once())
@@ -53,8 +61,27 @@ class FormTypeValidatorExtensionTest extends BaseValidatorExtensionTest
$this->assertAttributeSame($validator, 'validator', $formTypeValidatorExtension);
}
public function testGroupSequenceWithConstraintsOption()
{
$form = Forms::createFormFactoryBuilder()
->addExtension(new ValidatorExtension(Validation::createValidator()))
->getFormFactory()
->create(FormTypeTest::TESTED_TYPE, null, (array('validation_groups' => new GroupSequence(array('First', 'Second')))))
->add('field', TextTypeTest::TESTED_TYPE, array(
'constraints' => array(
new Length(array('min' => 10, 'groups' => array('First'))),
new Email(array('groups' => array('Second'))),
),
))
;
$form->submit(array('field' => 'wrong'));
$this->assertCount(1, $form->getErrors(true));
}
protected function createForm(array $options = array())
{
return $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, $options);
return $this->factory->create(FormTypeTest::TESTED_TYPE, null, $options);
}
}
@@ -29,11 +29,8 @@ use Symfony\Component\Validator\ConstraintViolationInterface;
class ViolationMapperTest extends TestCase
{
const LEVEL_0 = 0;
const LEVEL_1 = 1;
const LEVEL_1B = 2;
const LEVEL_2 = 3;
/**
@@ -1260,7 +1257,7 @@ class ViolationMapperTest extends TestCase
// Only add it if we expect the error to come up on a different
// level than LEVEL_0, because in this case the error would
// (correctly) be mapped to the distraction field
if ($target !== self::LEVEL_0) {
if (self::LEVEL_0 !== $target) {
$mapFromPath = new PropertyPath($mapFrom);
$mapFromPrefix = $mapFromPath->isIndex(0)
? '['.$mapFromPath->getElement(0).']'
@@ -1274,7 +1271,7 @@ class ViolationMapperTest extends TestCase
$this->mapper->mapViolation($violation, $parent);
if ($target !== self::LEVEL_0) {
if (self::LEVEL_0 !== $target) {
$this->assertCount(0, $distraction->getErrors(), 'distraction should not have an error, but has one');
}
@@ -96,7 +96,7 @@ class ViolationPathTest extends TestCase
$path = new ViolationPath($string);
$this->assertSame($slicedPath, $path->__toString());
$this->assertSame(count($entries), count($path->getElements()));
$this->assertCount(count($entries), $path->getElements());
$this->assertSame(count($entries), $path->getLength());
foreach ($entries as $index => $entry) {