Marking new service has private, then adding a workaround for the integration test

This commit is contained in:
Ryan Weaver 2015-12-16 10:54:17 -05:00
parent 000c4b11ed
commit 21576fce48
5 changed files with 32 additions and 4 deletions

View file

@ -21,6 +21,6 @@
</service> </service>
<!-- parsers will be injected with a compiler pass --> <!-- parsers will be injected with a compiler pass -->
<service id="markdown.parser.parser_manager" class="Knp\Bundle\MarkdownBundle\Parser\ParserManager" /> <service id="markdown.parser.parser_manager" class="Knp\Bundle\MarkdownBundle\Parser\ParserManager" public="false" />
</services> </services>
</container> </container>

View file

@ -15,8 +15,9 @@ class ParserManagerTest extends \PHPUnit_Framework_TestCase
$kernel->boot(); $kernel->boot();
$container = $kernel->getContainer(); $container = $kernel->getContainer();
$serviceHelper = $container->get('knp.markdown.test.service_helper');
/** @var ParserManager $parserManager */ /** @var ParserManager $parserManager */
$parserManager = $container->get('markdown.parser.parser_manager'); $parserManager = $serviceHelper->getParserManager();
$actual = $parserManager->transform('*hi*'); $actual = $parserManager->transform('*hi*');
$this->assertEquals("<p><em>hi</em></p>\n", $actual, 'There is a default parser'); $this->assertEquals("<p><em>hi</em></p>\n", $actual, 'There is a default parser');

23
Tests/fixtures/app/ServiceHelper.php vendored Normal file
View file

@ -0,0 +1,23 @@
<?php
namespace Knp\Bundle\MarkdownBundle\Tests\fixtures\app;
use Knp\Bundle\MarkdownBundle\Parser\ParserManager;
/**
* Class helps access private services from integration tests.
*/
class ServiceHelper
{
private $parserManager;
public function __construct(ParserManager $parserManager)
{
$this->parserManager = $parserManager;
}
public function getParserManager()
{
return $this->parserManager;
}
}

View file

@ -6,7 +6,7 @@ use Knp\Bundle\MarkdownBundle\KnpMarkdownBundle;
use Symfony\Bundle\FrameworkBundle\FrameworkBundle; use Symfony\Bundle\FrameworkBundle\FrameworkBundle;
use Symfony\Component\Config\Loader\LoaderInterface; use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Bundle\BundleInterface; use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\HttpKernel\Kernel; use Symfony\Component\HttpKernel\Kernel;
class TestKernel extends Kernel class TestKernel extends Kernel
@ -25,6 +25,10 @@ class TestKernel extends Kernel
$c->loadFromExtension('framework', array( $c->loadFromExtension('framework', array(
'secret' => 'MarkdownTesting' 'secret' => 'MarkdownTesting'
)); ));
// add a service to help access private services for integration tests
$c->register('knp.markdown.test.service_helper', 'Knp\Bundle\MarkdownBundle\Tests\fixtures\app\ServiceHelper')
->addArgument(new Reference('markdown.parser.parser_manager'));
}); });
} }
} }

View file

@ -6,7 +6,7 @@ use Knp\Bundle\MarkdownBundle\Parser\ParserManager;
class MarkdownTwigExtension extends \Twig_Extension class MarkdownTwigExtension extends \Twig_Extension
{ {
protected $parserManager; private $parserManager;
public function __construct(ParserManager $parserManager) public function __construct(ParserManager $parserManager)
{ {