Version 1
[yaffs-website] / vendor / symfony / validator / Tests / ConstraintTest.php
diff --git a/vendor/symfony/validator/Tests/ConstraintTest.php b/vendor/symfony/validator/Tests/ConstraintTest.php
new file mode 100644 (file)
index 0000000..a057414
--- /dev/null
@@ -0,0 +1,245 @@
+<?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;
+
+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);
+    }
+}