Parses and merges(imports) bundle configurations.
public parseConfig ( array $configs ) : |
||
$configs | array | |
return |
public function testFileImportSaveMixed() { $configs = new Configs($this->getJarves()); $this->setupFiles(); $bundle = new TestsFileImportBundle(); $configStrings = $configs->getXmlConfigsForBundle($bundle); $configObjects = $configs->parseConfig($configStrings); $testBundleConfig = $configObjects['testsfileimport']; $this->assertNotNull($testBundleConfig); $export = $testBundleConfig->exportFileBased('objects'); $exportCaches = $testBundleConfig->exportFileBased('caches'); $this->assertStringEqualsFile($this->getJarvesObjectsXmlFile(), $export, 'no changes'); $this->assertStringEqualsFile($this->getJarvesXmlFile(), $exportCaches, 'no changes'); $objects = $testBundleConfig->getObjects(); current($objects)->setId('TestChanged'); $testBundleConfig->setObjects($objects); $caches = $testBundleConfig->getCaches(); $caches[1]->setMethod('testMethod2'); $testBundleConfig->setCaches($caches); $events = $testBundleConfig->getEvents(); $events[1]->setKey('core/object/updateModified'); $testBundleConfig->setEvents($events); $this->getConfigurationOperator()->saveFileBased($testBundleConfig, 'objects'); $xml = '<config> <bundle> <objects> <object id="TestChanged"> <label>Test</label> <storageService>tests.store.core.test</storageService> <fields> <field id="id" type="number" primaryKey="true"> <label>ID</label> </field> <field id="name" type="text"> <label>Name</label> </field> </fields> </object> </objects> </bundle> </config>'; $this->assertEquals(static::$jarvesObjectsXml, $testBundleConfig->getPropertyFilePath('objects')); $this->assertStringEqualsFile($this->getRoot() . $testBundleConfig->getPropertyFilePath('objects'), $xml); $this->assertEquals(static::$jarvesXml, $testBundleConfig->getPropertyFilePath('caches')); $this->assertEquals(static::$jarvesXml, $testBundleConfig->getPropertyFilePath('events')); $this->getConfigurationOperator()->saveFileBased($testBundleConfig, 'caches'); $xmlCaches = '<config> <bundle> <caches> <cache>core/contents</cache> <cache method="testMethod2">core/contents2</cache> </caches> <events> <event key="core/object/modify"> <desc>Fires on every object modification (add/delete/update). Subject is the normalized object key.</desc> </event> <event key="core/object/update"> <desc>Fires on every object update. Subject is the normalized object key.</desc> </event> </events> <listeners> <event key="core/object/modify" subject="core:domain"> <clearCache>core/domains.created</clearCache> <clearCache>core/domains</clearCache> </event> <event key="core/object/modify" subject="core:content"> <clearCache>core/contents</clearCache> </event> <event key="core/object/modify" subject="core:node"> <clearCache>core/contents</clearCache> </event> </listeners> </bundle> </config>'; $this->assertStringEqualsFile($this->getRoot() . $testBundleConfig->getPropertyFilePath('caches'), $xmlCaches); $this->getConfigurationOperator()->saveFileBased($testBundleConfig, 'events'); $xmlEvents = '<config> <bundle> <caches> <cache>core/contents</cache> <cache method="testMethod2">core/contents2</cache> </caches> <events> <event key="core/object/modify"> <desc>Fires on every object modification (add/delete/update). Subject is the normalized object key.</desc> </event> <event key="core/object/updateModified"> <desc>Fires on every object update. Subject is the normalized object key.</desc> </event> </events> <listeners> <event key="core/object/modify" subject="core:domain"> <clearCache>core/domains.created</clearCache> <clearCache>core/domains</clearCache> </event> <event key="core/object/modify" subject="core:content"> <clearCache>core/contents</clearCache> </event> <event key="core/object/modify" subject="core:node"> <clearCache>core/contents</clearCache> </event> </listeners> </bundle> </config>'; $this->assertStringEqualsFile($this->getRoot() . $testBundleConfig->getPropertyFilePath('events'), $xmlEvents); $bundle = new TestsFileImportBundle(); $configStrings = $configs->getXmlConfigsForBundle($bundle); $configObjects = $configs->parseConfig($configStrings); $testBundleConfig = $configObjects['testsfileimport']; $this->assertNotNull($testBundleConfig); $this->assertCount(1, $testBundleConfig->getObjects()); $this->assertCount(2, $testBundleConfig->getCaches()); $this->assertCount(2, $testBundleConfig->getEvents()); $this->assertEquals('TestChanged', current($testBundleConfig->getObjects())->getId()); $this->assertEquals('testMethod2', $testBundleConfig->getCaches()[1]->getMethod()); $this->assertEquals('core/object/updateModified', $testBundleConfig->getEvents()[1]->getKey()); unlink($this->getJarvesXmlFile()); unlink($this->getJarvesObjectsXmlFile()); }