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>
<!-- 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>
</container>

View file

@ -15,8 +15,9 @@ class ParserManagerTest extends \PHPUnit_Framework_TestCase
$kernel->boot();
$container = $kernel->getContainer();
$serviceHelper = $container->get('knp.markdown.test.service_helper');
/** @var ParserManager $parserManager */
$parserManager = $container->get('markdown.parser.parser_manager');
$parserManager = $serviceHelper->getParserManager();
$actual = $parserManager->transform('*hi*');
$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\Component\Config\Loader\LoaderInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Bundle\BundleInterface;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\HttpKernel\Kernel;
class TestKernel extends Kernel
@ -25,6 +25,10 @@ class TestKernel extends Kernel
$c->loadFromExtension('framework', array(
'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
{
protected $parserManager;
private $parserManager;
public function __construct(ParserManager $parserManager)
{