Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / symfony / config / Tests / Definition / Builder / ArrayNodeDefinitionTest.php
index 63efd719b5f59bf9afb83df7af060984a06acc24..0fd4af976784a169eed5a188553c52bf8e4903a1 100644 (file)
@@ -32,7 +32,7 @@ class ArrayNodeDefinitionTest extends TestCase
             ->append($child);
 
         $this->assertCount(3, $this->getField($parent, 'children'));
-        $this->assertTrue(in_array($child, $this->getField($parent, 'children')));
+        $this->assertContains($child, $this->getField($parent, 'children'));
     }
 
     /**
@@ -231,6 +231,48 @@ class ArrayNodeDefinitionTest extends TestCase
         $this->assertFalse($this->getField($node, 'normalizeKeys'));
     }
 
+    public function testPrototypeVariable()
+    {
+        $node = new ArrayNodeDefinition('root');
+        $this->assertEquals($node->prototype('variable'), $node->variablePrototype());
+    }
+
+    public function testPrototypeScalar()
+    {
+        $node = new ArrayNodeDefinition('root');
+        $this->assertEquals($node->prototype('scalar'), $node->scalarPrototype());
+    }
+
+    public function testPrototypeBoolean()
+    {
+        $node = new ArrayNodeDefinition('root');
+        $this->assertEquals($node->prototype('boolean'), $node->booleanPrototype());
+    }
+
+    public function testPrototypeInteger()
+    {
+        $node = new ArrayNodeDefinition('root');
+        $this->assertEquals($node->prototype('integer'), $node->integerPrototype());
+    }
+
+    public function testPrototypeFloat()
+    {
+        $node = new ArrayNodeDefinition('root');
+        $this->assertEquals($node->prototype('float'), $node->floatPrototype());
+    }
+
+    public function testPrototypeArray()
+    {
+        $node = new ArrayNodeDefinition('root');
+        $this->assertEquals($node->prototype('array'), $node->arrayPrototype());
+    }
+
+    public function testPrototypeEnum()
+    {
+        $node = new ArrayNodeDefinition('root');
+        $this->assertEquals($node->prototype('enum'), $node->enumPrototype());
+    }
+
     public function getEnableableNodeFixtures()
     {
         return array(
@@ -243,6 +285,58 @@ class ArrayNodeDefinitionTest extends TestCase
         );
     }
 
+    public function testRequiresAtLeastOneElement()
+    {
+        $node = new ArrayNodeDefinition('root');
+        $node
+            ->requiresAtLeastOneElement()
+            ->integerPrototype();
+
+        $node->getNode()->finalize(array(1));
+
+        $this->addToAssertionCount(1);
+    }
+
+    /**
+     * @group legacy
+     * @expectedDeprecation Using Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition::cannotBeEmpty() at path "root" has no effect, consider requiresAtLeastOneElement() instead. In 4.0 both methods will behave the same.
+     */
+    public function testCannotBeEmpty()
+    {
+        $node = new ArrayNodeDefinition('root');
+        $node
+            ->cannotBeEmpty()
+            ->integerPrototype();
+
+        $node->getNode()->finalize(array());
+    }
+
+    public function testSetDeprecated()
+    {
+        $node = new ArrayNodeDefinition('root');
+        $node
+            ->children()
+                ->arrayNode('foo')->setDeprecated('The "%path%" node is deprecated.')->end()
+            ->end()
+        ;
+        $deprecatedNode = $node->getNode()->getChildren()['foo'];
+
+        $this->assertTrue($deprecatedNode->isDeprecated());
+        $this->assertSame('The "root.foo" node is deprecated.', $deprecatedNode->getDeprecationMessage($deprecatedNode->getName(), $deprecatedNode->getPath()));
+    }
+
+    /**
+     * @group legacy
+     * @expectedDeprecation ->cannotBeEmpty() is not applicable to concrete nodes at path "root". In 4.0 it will throw an exception.
+     */
+    public function testCannotBeEmptyOnConcreteNode()
+    {
+        $node = new ArrayNodeDefinition('root');
+        $node->cannotBeEmpty();
+
+        $node->getNode()->finalize(array());
+    }
+
     protected function getField($object, $field)
     {
         $reflection = new \ReflectionProperty($object, $field);