* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Validator\Tests; use PHPUnit\Framework\TestCase; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\Tests\Fixtures\ClassConstraint; use Symfony\Component\Validator\Tests\Fixtures\ConstraintA; use Symfony\Component\Validator\Tests\Fixtures\ConstraintB; use Symfony\Component\Validator\Tests\Fixtures\ConstraintC; use Symfony\Component\Validator\Tests\Fixtures\ConstraintWithValue; use Symfony\Component\Validator\Tests\Fixtures\ConstraintWithValueAsDefault; class ConstraintTest extends TestCase { public function testSetProperties() { $constraint = new ConstraintA(array( 'property1' => 'foo', 'property2' => 'bar', )); $this->assertEquals('foo', $constraint->property1); $this->assertEquals('bar', $constraint->property2); } public function testSetNotExistingPropertyThrowsException() { $this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('Symfony\Component\Validator\Exception\InvalidOptionsException'); new ConstraintA(array( 'foo' => 'bar', )); } public function testMagicPropertiesAreNotAllowed() { $constraint = new ConstraintA(); $this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('Symfony\Component\Validator\Exception\InvalidOptionsException'); $constraint->foo = 'bar'; } public function testInvalidAndRequiredOptionsPassed() { $this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('Symfony\Component\Validator\Exception\InvalidOptionsException'); new ConstraintC(array( 'option1' => 'default', 'foo' => 'bar', )); } public function testSetDefaultProperty() { $constraint = new ConstraintA('foo'); $this->assertEquals('foo', $constraint->property2); } public function testSetDefaultPropertyDoctrineStyle() { $constraint = new ConstraintA(array('value' => 'foo')); $this->assertEquals('foo', $constraint->property2); } public function testSetDefaultPropertyDoctrineStylePlusOtherProperty() { $constraint = new ConstraintA(array('value' => 'foo', 'property1' => 'bar')); $this->assertEquals('foo', $constraint->property2); $this->assertEquals('bar', $constraint->property1); } public function testSetDefaultPropertyDoctrineStyleWhenDefaultPropertyIsNamedValue() { $constraint = new ConstraintWithValueAsDefault(array('value' => 'foo')); $this->assertEquals('foo', $constraint->value); $this->assertNull($constraint->property); } public function testDontSetDefaultPropertyIfValuePropertyExists() { $constraint = new ConstraintWithValue(array('value' => 'foo')); $this->assertEquals('foo', $constraint->value); $this->assertNull($constraint->property); } public function testSetUndefinedDefaultProperty() { $this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('Symfony\Component\Validator\Exception\ConstraintDefinitionException'); new ConstraintB('foo'); } public function testRequiredOptionsMustBeDefined() { $this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('Symfony\Component\Validator\Exception\MissingOptionsException'); new ConstraintC(); } public function testRequiredOptionsPassed() { $constraint = new ConstraintC(array('option1' => 'default')); $this->assertSame('default', $constraint->option1); } public function testGroupsAreConvertedToArray() { $constraint = new ConstraintA(array('groups' => 'Foo')); $this->assertEquals(array('Foo'), $constraint->groups); } public function testAddDefaultGroupAddsGroup() { $constraint = new ConstraintA(array('groups' => 'Default')); $constraint->addImplicitGroupName('Foo'); $this->assertEquals(array('Default', 'Foo'), $constraint->groups); } public function testAllowsSettingZeroRequiredPropertyValue() { $constraint = new ConstraintA(0); $this->assertEquals(0, $constraint->property2); } public function testCanCreateConstraintWithNoDefaultOptionAndEmptyArray() { $constraint = new ConstraintB(array()); $this->assertSame(array(Constraint::PROPERTY_CONSTRAINT, Constraint::CLASS_CONSTRAINT), $constraint->getTargets()); } public function testGetTargetsCanBeString() { $constraint = new ClassConstraint(); $this->assertEquals('class', $constraint->getTargets()); } public function testGetTargetsCanBeArray() { $constraint = new ConstraintA(); $this->assertEquals(array('property', 'class'), $constraint->getTargets()); } public function testSerialize() { $constraint = new ConstraintA(array( 'property1' => 'foo', 'property2' => 'bar', )); $restoredConstraint = unserialize(serialize($constraint)); $this->assertEquals($constraint, $restoredConstraint); } public function testSerializeInitializesGroupsOptionToDefault() { $constraint = new ConstraintA(array( 'property1' => 'foo', 'property2' => 'bar', )); $constraint = unserialize(serialize($constraint)); $expected = new ConstraintA(array( 'property1' => 'foo', 'property2' => 'bar', 'groups' => 'Default', )); $this->assertEquals($expected, $constraint); } public function testSerializeKeepsCustomGroups() { $constraint = new ConstraintA(array( 'property1' => 'foo', 'property2' => 'bar', 'groups' => 'MyGroup', )); $constraint = unserialize(serialize($constraint)); $this->assertSame(array('MyGroup'), $constraint->groups); } /** * @expectedException \Symfony\Component\Validator\Exception\InvalidArgumentException */ public function testGetErrorNameForUnknownCode() { Constraint::getErrorName(1); } public function testOptionsAsDefaultOption() { $constraint = new ConstraintA($options = array('value1')); $this->assertEquals($options, $constraint->property2); $constraint = new ConstraintA($options = array('value1', 'property1' => 'value2')); $this->assertEquals($options, $constraint->property2); } /** * @expectedException \Symfony\Component\Validator\Exception\InvalidOptionsException * @expectedExceptionMessage The options "0", "5" do not exist */ public function testInvalidOptions() { new ConstraintA(array('property2' => 'foo', 'bar', 5 => 'baz')); } public function testOptionsWithInvalidInternalPointer() { $options = array('property1' => 'foo'); next($options); next($options); $constraint = new ConstraintA($options); $this->assertEquals('foo', $constraint->property1); } } __halt_compiler();----SIGNATURE:----Dj2IlBjjMQ7vI3zRALxzCpOhkGhx2Y/BHeJ4/lJc696WvygjKfwgVFRQ9UUXRB12YrXv3uDhU+US/FZxAk8Rxwc1HQhAw5YGOEnUT963zkdVtcCwhdpb130OIGSpJt+yhKeEduiDX5aj1apx8JIRz2u9cNO7CbxKbyZu4p8/pG2LDyQre0X8/CPcTq98Jz54oSuSjw/qYummAFynftjKDKtfkvVkpN1GdVCheE02xot4iGyTxPY1zCzMlvAR0jxZDExxiNzp0kg2QCvaaZ0GjxcoHI4myf2+D+gxJPeuKBtL1xsO+S16X048tMz71yh2vXdUGo+VmeVvCtI4qzxipDoqgbNO1ly/wJPpbgetl2Vq8TdsCFPfaHPDrJFg41JQGu64QWcP5eenAW6wwhNY0gYEZLVPY1tNy3h1+fBNGmYUbXON62V2yoUxvHpepKjeqw1tpRakiplrGr5Fjlpjr7dw2CmTuLFi156OlfRRTv6G1SGxYK3/rkF/cLm17GFUc3jrC+j2s+H/ZeblPSqVEAneIWq1J+4oTVp6QwcrtH7HiOVTaPlynhA1F1LuH9/nHNv4ZZiza9gr6TeXxbT5TBC03kga5GqYSHPtm0Nu5FsIeoxbMsafOB7ndYXmjt/DHQ01TbfJn2OEqCOGN9M2JQzSAbROYVIQaEBuMd49W9M=----ATTACHMENT:----NDE0NjA1Nzk2MDMzMzY4MiA5MzU2MDI3NTY4MzQzMzA5IDk4MjA1NjkwNTA0OTg5NTc=