2 namespace Consolidation\Config\Loader;
4 use Consolidation\TestUtils\TestLoader;
6 class ConfigProcessorTest extends \PHPUnit_Framework_TestCase
8 public function testConfigProcessorAdd()
23 $processor = new ConfigProcessor();
24 $processor->add($config1);
25 $processor->add($config2);
26 $processor->add($config3);
28 $data = $processor->export();
29 $this->assertEquals('foo', $data['c']);
30 $this->assertEquals('foobar', $data['b']);
31 $this->assertEquals('foobarbaz', $data['a']);
34 public function processorForConfigMergeTest($provideSourceNames)
68 $processor = new ConfigProcessor();
69 $testLoader = new TestLoader();
71 $testLoader->set($config1);
72 $testLoader->setSourceName($provideSourceNames ? 'c-1' : '');
73 $processor->extend($testLoader);
75 $testLoader->set($config2);
76 $testLoader->setSourceName($provideSourceNames ? 'c-2' : '');
77 $processor->extend($testLoader);
79 $testLoader->set($config3);
80 $testLoader->setSourceName($provideSourceNames ? 'c-3' : '');
81 $processor->extend($testLoader);
86 public function testConfigProcessorMergeAssociative()
88 $processor = $this->processorForConfigMergeTest(false);
89 $data = $processor->export();
90 $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));
93 public function testConfigProcessorMergeAssociativeWithSourceNames()
95 $processor = $this->processorForConfigMergeTest(true);
96 $sources = $processor->sources();
97 $data = $processor->export();
98 $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));
99 $this->assertEquals('c-1', $sources['m']['x']);
100 $this->assertEquals('c-1', $sources['m']['y']['r']);
101 $this->assertEquals('c-2', $sources['m']['w']);
102 $this->assertEquals('c-2', $sources['m']['y']['s']);
103 $this->assertEquals('c-3', $sources['m']['z']);
104 $this->assertEquals('c-3', $sources['m']['y']['u']);
107 public function testConfiProcessorSources()
109 $processor = new ConfigProcessor();
110 $loader = new YamlConfigLoader();
111 $processor->extend($loader->load(__DIR__ . '/data/config-1.yml'));
112 $processor->extend($loader->load(__DIR__ . '/data/config-2.yml'));
113 $processor->extend($loader->load(__DIR__ . '/data/config-3.yml'));
115 $sources = $processor->sources();
117 $data = $processor->export();
118 $this->assertEquals('foo', $data['c']);
119 $this->assertEquals('foobar', $data['b']);
120 $this->assertEquals('foobarbaz', $data['a']);
122 $this->assertEquals('3', $data['m'][0]);
124 $this->assertEquals( __DIR__ . '/data/config-3.yml', $sources['a']);
125 $this->assertEquals( __DIR__ . '/data/config-2.yml', $sources['b']);
126 $this->assertEquals( __DIR__ . '/data/config-1.yml', $sources['c']);
127 $this->assertEquals( __DIR__ . '/data/config-3.yml', $sources['m']);
130 public function testConfiProcessorSourcesLoadInReverseOrder()
132 $processor = new ConfigProcessor();
133 $loader = new YamlConfigLoader();
134 $processor->extend($loader->load(__DIR__ . '/data/config-3.yml'));
135 $processor->extend($loader->load(__DIR__ . '/data/config-2.yml'));
136 $processor->extend($loader->load(__DIR__ . '/data/config-1.yml'));
138 $sources = $processor->sources();
140 $data = $processor->export();
141 $this->assertEquals('foo', $data['c']);
142 $this->assertEquals('foobar', $data['b']);
143 $this->assertEquals('foobarbaz', $data['a']);
145 $this->assertEquals('1', $data['m'][0]);
147 $this->assertEquals( __DIR__ . '/data/config-3.yml', $sources['a']);
148 $this->assertEquals( __DIR__ . '/data/config-2.yml', $sources['b']);
149 $this->assertEquals( __DIR__ . '/data/config-1.yml', $sources['c']);
150 $this->assertEquals( __DIR__ . '/data/config-1.yml', $sources['m']);