public function testExtensions() { Loader::registerExtension(new \ProjectExtension()); Loader::registerExtension(new \ProjectWithXsdExtension()); $loader = new ProjectLoader2(self::$fixturesPath . '/xml'); // extension without an XSD $config = $loader->load('extensions/services1.xml'); $services = $config->getDefinitions(); $parameters = $config->getParameterBag()->all(); $this->assertTrue(isset($services['project.service.bar']), '->load() parses extension elements'); $this->assertTrue(isset($parameters['project.parameter.bar']), '->load() parses extension elements'); $this->assertEquals('BAR', $services['project.service.foo']->getClass(), '->load() parses extension elements'); $this->assertEquals('BAR', $parameters['project.parameter.foo'], '->load() parses extension elements'); // extension with an XSD $config = $loader->load('extensions/services2.xml'); $services = $config->getDefinitions(); $parameters = $config->getParameterBag()->all(); $this->assertTrue(isset($services['project.service.bar']), '->load() parses extension elements'); $this->assertTrue(isset($parameters['project.parameter.bar']), '->load() parses extension elements'); $this->assertEquals('BAR', $services['project.service.foo']->getClass(), '->load() parses extension elements'); $this->assertEquals('BAR', $parameters['project.parameter.foo'], '->load() parses extension elements'); // extension with an XSD (does not validate) try { $config = $loader->load('extensions/services3.xml'); $this->fail('->load() throws an InvalidArgumentException if the configuration does not validate the XSD'); } catch (\Exception $e) { $this->assertInstanceOf('\\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the configuration does not validate the XSD'); $this->assertRegexp('/The attribute \'bar\' is not allowed/', $e->getMessage(), '->load() throws an InvalidArgumentException if the configuration does not validate the XSD'); } // non-registered extension try { $config = $loader->load('extensions/services4.xml'); $this->fail('->load() throws an InvalidArgumentException if the tag is not valid'); } catch (\Exception $e) { $this->assertInstanceOf('\\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the tag is not valid'); $this->assertStringStartsWith('There is no extension able to load the configuration for "project:bar" (in', $e->getMessage(), '->load() throws an InvalidArgumentException if the tag is not valid'); } // non-existent tag for a known extension try { $config = $loader->load('extensions/services5.xml'); $this->fail('->load() throws an InvalidArgumentException if a tag is not valid for a given extension'); } catch (\Exception $e) { $this->assertInstanceOf('\\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if a tag is not valid for a given extension'); $this->assertStringStartsWith('The tag "projectwithxsd:foobar" is not defined in the "projectwithxsd" extension.', $e->getMessage(), '->load() throws an InvalidArgumentException if a tag is not valid for a given extension'); } }
public function testExtensions() { Loader::registerExtension(new \ProjectExtension()); $loader = new ProjectLoader2(self::$fixturesPath . '/xml'); $config = $loader->load('services10.xml'); $services = $config->getDefinitions(); $parameters = $config->getParameters(); $this->assertTrue(isset($services['project.service.bar']), '->load() parses extension elements'); $this->assertTrue(isset($parameters['project.parameter.bar']), '->load() parses extension elements'); $this->assertEquals('BAR', $services['project.service.foo']->getClass(), '->load() parses extension elements'); $this->assertEquals('BAR', $parameters['project.parameter.foo'], '->load() parses extension elements'); try { $config = $loader->load('services11.xml'); $this->fail('->load() throws an InvalidArgumentException if the tag is not valid'); } catch (\Exception $e) { $this->assertInstanceOf('\\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the tag is not valid'); $this->assertStringStartsWith('There is no extension able to load the configuration for "foobar:foobar" (in', $e->getMessage(), '->load() throws an InvalidArgumentException if the tag is not valid'); } try { $config = $loader->load('services12.xml'); $this->fail('->load() throws an InvalidArgumentException if an extension is not loaded'); } catch (\Exception $e) { $this->assertInstanceOf('\\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if an extension is not loaded'); $this->assertStringStartsWith('The "foobar" tag is not valid (in', $e->getMessage(), '->load() throws an InvalidArgumentException if an extension is not loaded'); } }
public function testExtensions() { Loader::registerExtension(new \ProjectExtension()); $loader = new ProjectLoader2(self::$fixturesPath . '/xml'); $config = $loader->load('services10.xml'); $services = $config->getDefinitions(); $parameters = $config->getParameters(); $this->assertTrue(isset($services['project.service.bar']), '->load() parses extension elements'); $this->assertTrue(isset($parameters['project.parameter.bar']), '->load() parses extension elements'); try { $config = $loader->load('services11.xml'); $this->fail('->load() throws an InvalidArgumentException if the tag is not valid'); } catch (\InvalidArgumentException $e) { } try { $config = $loader->load('services12.xml'); $this->fail('->load() throws an InvalidArgumentException if an extension is not loaded'); } catch (\InvalidArgumentException $e) { } }