parseConfig() 공개 메소드

Parses and merges(imports) bundle configurations.
public parseConfig ( array $configs ) : Bundle[]
$configs array
리턴 Bundle[]
예제 #1
0
    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());
    }