1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
<?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\Validator\Tests\Constraints;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\Constraints\AbstractComparison;
use Symfony\Component\Validator\Constraints\Positive;
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
/**
* @author Jan Schädlich <jan.schaedlich@sensiolabs.de>
*/
class GreaterThanValidatorWithPositiveConstraintTest extends GreaterThanValidatorTest
{
protected static function createConstraint(?array $options = null): Constraint
{
return new Positive($options);
}
public static function provideValidComparisons(): array
{
return [
[2, 0],
[2.5, 0],
['333', '0'],
[null, 0],
];
}
public static function provideInvalidComparisons(): array
{
return [
[0, '0', 0, '0', 'int'],
[-1, '-1', 0, '0', 'int'],
[-2, '-2', 0, '0', 'int'],
[-2.5, '-2.5', 0, '0', 'int'],
];
}
public function testThrowsConstraintExceptionIfPropertyPath()
{
$this->expectException(ConstraintDefinitionException::class);
$this->expectExceptionMessage('The "propertyPath" option of the "Symfony\Component\Validator\Constraints\Positive" constraint cannot be set.');
return new Positive(['propertyPath' => 'field']);
}
public function testThrowsConstraintExceptionIfValue()
{
$this->expectException(ConstraintDefinitionException::class);
$this->expectExceptionMessage('The "value" option of the "Symfony\Component\Validator\Constraints\Positive" constraint cannot be set.');
return new Positive(['value' => 0]);
}
/**
* @dataProvider provideInvalidConstraintOptions
*/
public function testThrowsConstraintExceptionIfNoValueOrPropertyPath($options)
{
$this->expectException(ConstraintDefinitionException::class);
$this->expectExceptionMessage('requires either the "value" or "propertyPath" option to be set.');
$this->markTestSkipped('Value option always set for Positive constraint.');
}
public function testThrowsConstraintExceptionIfBothValueAndPropertyPath()
{
$this->expectException(ConstraintDefinitionException::class);
$this->expectExceptionMessage('requires only one of the "value" or "propertyPath" options to be set, not both.');
$this->markTestSkipped('Value option is set for Positive constraint automatically');
}
public function testNoViolationOnNullObjectWithPropertyPath()
{
$this->markTestSkipped('PropertyPath option is not used in Positive constraint');
}
public function testInvalidValuePath()
{
$this->markTestSkipped('PropertyPath option is not used in Positive constraint');
}
public static function provideAllValidComparisons(): array
{
self::markTestSkipped('The "value" option cannot be used in the Positive constraint');
}
/**
* @dataProvider provideValidComparisonsToPropertyPath
*/
public function testValidComparisonToPropertyPath($comparedValue)
{
$this->markTestSkipped('PropertyPath option is not used in Positive constraint');
}
/**
* @group nophpunit11
*/
public function testThrowsOnInvalidStringDates(AbstractComparison $constraint, $expectedMessage, $value)
{
$this->markTestSkipped('The compared value cannot be an invalid string date because it is hardcoded to 0.');
}
public function testInvalidComparisonToPropertyPathAddsPathAsParameter()
{
$this->markTestSkipped('PropertyPath option is not used in Positive constraint');
}
public static function throwsOnInvalidStringDatesProvider(): array
{
self::markTestSkipped('The "value" option cannot be used in the Positive constraint');
}
public static function provideAllInvalidComparisons(): array
{
self::markTestSkipped('The "value" option cannot be used in the Positive constraint');
}
public static function provideComparisonsToNullValueAtPropertyPath(): array
{
self::markTestSkipped('PropertyPath option is not used in PositiveOrZero constraint');
}
}
|