Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / consolidation / config / tests / ConfigProcessorTest.php
diff --git a/vendor/consolidation/config/tests/ConfigProcessorTest.php b/vendor/consolidation/config/tests/ConfigProcessorTest.php
new file mode 100644 (file)
index 0000000..ac645a2
--- /dev/null
@@ -0,0 +1,152 @@
+<?php
+namespace Consolidation\Config\Loader;
+
+use Consolidation\TestUtils\TestLoader;
+
+class ConfigProcessorTest extends \PHPUnit_Framework_TestCase
+{
+    public function testConfigProcessorAdd()
+    {
+        $config1 = [
+            'c' => 'foo',
+            'm' => [1],
+        ];
+        $config2 = [
+            'b' => '${c}bar',
+            'm' => [2],
+        ];
+        $config3 = [
+            'a' => '${b}baz',
+            'm' => [3],
+        ];
+
+        $processor = new ConfigProcessor();
+        $processor->add($config1);
+        $processor->add($config2);
+        $processor->add($config3);
+
+        $data = $processor->export();
+        $this->assertEquals('foo', $data['c']);
+        $this->assertEquals('foobar', $data['b']);
+        $this->assertEquals('foobarbaz', $data['a']);
+    }
+
+    public function processorForConfigMergeTest($provideSourceNames)
+    {
+        $config1 = [
+            'm' => [
+                'x' => 'x-1',
+                'y' => [
+                    'r' => 'r-1',
+                    's' => 's-1',
+                    't' => 't-1',
+                ],
+                'z' => 'z-1',
+            ],
+        ];
+        $config2 = [
+            'm' => [
+                'w' => 'w-2',
+                'y' => [
+                    'q' => 'q-2',
+                    's' => 's-2',
+                ],
+                'z' => 'z-2',
+            ],
+        ];
+        $config3 = [
+            'm' => [
+                'v' => 'v-3',
+                'y' => [
+                    't' => 't-3',
+                    'u' => 'u-3',
+                ],
+                'z' => 'z-3',
+            ],
+        ];
+
+        $processor = new ConfigProcessor();
+        $testLoader = new TestLoader();
+
+        $testLoader->set($config1);
+        $testLoader->setSourceName($provideSourceNames ? 'c-1' : '');
+        $processor->extend($testLoader);
+
+        $testLoader->set($config2);
+        $testLoader->setSourceName($provideSourceNames ? 'c-2' : '');
+        $processor->extend($testLoader);
+
+        $testLoader->set($config3);
+        $testLoader->setSourceName($provideSourceNames ? 'c-3' : '');
+        $processor->extend($testLoader);
+
+        return $processor;
+    }
+
+    public function testConfigProcessorMergeAssociative()
+    {
+        $processor = $this->processorForConfigMergeTest(false);
+        $data = $processor->export();
+        $this->assertEquals('{"m":{"x":"x-1","y":{"r":"r-1","s":"s-2","t":"t-3","q":"q-2","u":"u-3"},"z":"z-3","w":"w-2","v":"v-3"}}', json_encode($data));
+    }
+
+    public function testConfigProcessorMergeAssociativeWithSourceNames()
+    {
+        $processor = $this->processorForConfigMergeTest(true);
+        $sources = $processor->sources();
+        $data = $processor->export();
+        $this->assertEquals('{"m":{"x":"x-1","y":{"r":"r-1","s":"s-2","t":"t-3","q":"q-2","u":"u-3"},"z":"z-3","w":"w-2","v":"v-3"}}', json_encode($data));
+        $this->assertEquals('c-1', $sources['m']['x']);
+        $this->assertEquals('c-1', $sources['m']['y']['r']);
+        $this->assertEquals('c-2', $sources['m']['w']);
+        $this->assertEquals('c-2', $sources['m']['y']['s']);
+        $this->assertEquals('c-3', $sources['m']['z']);
+        $this->assertEquals('c-3', $sources['m']['y']['u']);
+    }
+
+    public function testConfiProcessorSources()
+    {
+        $processor = new ConfigProcessor();
+        $loader = new YamlConfigLoader();
+        $processor->extend($loader->load(__DIR__ . '/data/config-1.yml'));
+        $processor->extend($loader->load(__DIR__ . '/data/config-2.yml'));
+        $processor->extend($loader->load(__DIR__ . '/data/config-3.yml'));
+
+        $sources = $processor->sources();
+
+        $data = $processor->export();
+        $this->assertEquals('foo', $data['c']);
+        $this->assertEquals('foobar', $data['b']);
+        $this->assertEquals('foobarbaz', $data['a']);
+
+        $this->assertEquals('3', $data['m'][0]);
+
+        $this->assertEquals( __DIR__ . '/data/config-3.yml', $sources['a']);
+        $this->assertEquals( __DIR__ . '/data/config-2.yml', $sources['b']);
+        $this->assertEquals( __DIR__ . '/data/config-1.yml', $sources['c']);
+        $this->assertEquals( __DIR__ . '/data/config-3.yml', $sources['m']);
+    }
+
+    public function testConfiProcessorSourcesLoadInReverseOrder()
+    {
+        $processor = new ConfigProcessor();
+        $loader = new YamlConfigLoader();
+        $processor->extend($loader->load(__DIR__ . '/data/config-3.yml'));
+        $processor->extend($loader->load(__DIR__ . '/data/config-2.yml'));
+        $processor->extend($loader->load(__DIR__ . '/data/config-1.yml'));
+
+        $sources = $processor->sources();
+
+        $data = $processor->export();
+        $this->assertEquals('foo', $data['c']);
+        $this->assertEquals('foobar', $data['b']);
+        $this->assertEquals('foobarbaz', $data['a']);
+
+        $this->assertEquals('1', $data['m'][0]);
+
+        $this->assertEquals( __DIR__ . '/data/config-3.yml', $sources['a']);
+        $this->assertEquals( __DIR__ . '/data/config-2.yml', $sources['b']);
+        $this->assertEquals( __DIR__ . '/data/config-1.yml', $sources['c']);
+        $this->assertEquals( __DIR__ . '/data/config-1.yml', $sources['m']);
+    }
+}