Skip to content

Commit

Permalink
moved component and bridge unit tests to the src/ directory
Browse files Browse the repository at this point in the history
This is the first step to make each Symfony Component and Bridge self-contained.
  • Loading branch information
fabpot committed Mar 29, 2012
1 parent a8499b8 commit b1301ae
Show file tree
Hide file tree
Showing 18 changed files with 860 additions and 2 deletions.
14 changes: 12 additions & 2 deletions README.md
Expand Up @@ -7,6 +7,16 @@ Symfony2 components.
Resources Resources
--------- ---------


Unit tests: You can run the unit tests with the following command:


https://github.com/symfony/symfony/tree/master/tests/Symfony/Tests/Bridge/Twig phpunit -c src/Symfony/Bridge/Twig/

If you also want to run the unit tests that depend on other Symfony
Components, declare the following environment variables before running
PHPUnit:

export HTTP_TWIG=../path/to/Twig
export HTTP_FORM=../path/to/Form
export HTTP_TRANSLATION=../path/to/Translation
export HTTP_EVENT_DISPATCHER=../path/to/EventDispatcher
export HTTP_LOCALE=../path/to/Locale
29 changes: 29 additions & 0 deletions Tests/Extension/Fixtures/StubFilesystemLoader.php
@@ -0,0 +1,29 @@
<?php

/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Symfony\Bridge\Twig\Tests\Extension\Fixtures;

// Preventing autoloader throwing E_FATAL when Twig is now available
if (!class_exists('Twig_Environment')) {
class StubFilesystemLoader {
}
} else {
class StubFilesystemLoader extends \Twig_Loader_Filesystem
{
protected function findTemplate($name)
{
// strip away bundle name
$parts = explode(':', $name);

return parent::findTemplate(end($parts));
}
}
}
35 changes: 35 additions & 0 deletions Tests/Extension/Fixtures/StubTranslator.php
@@ -0,0 +1,35 @@
<?php

/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Symfony\Bridge\Twig\Tests\Extension\Fixtures;

use Symfony\Component\Translation\TranslatorInterface;

class StubTranslator implements TranslatorInterface
{
public function trans($id, array $parameters = array(), $domain = null, $locale = null)
{
return '[trans]'.$id.'[/trans]';
}

public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null)
{
return '[trans]'.$id.'[/trans]';
}

public function setLocale($locale)
{
}

public function getLocale()
{
}
}
147 changes: 147 additions & 0 deletions Tests/Extension/FormExtensionDivLayoutTest.php
@@ -0,0 +1,147 @@
<?php

/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Symfony\Bridge\Twig\Tests\Extension;

use Symfony\Component\Form\FormView;
use Symfony\Bridge\Twig\Extension\FormExtension;
use Symfony\Bridge\Twig\Extension\TranslationExtension;
use Symfony\Component\Form\Tests\AbstractDivLayoutTest;
use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator;
use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubFilesystemLoader;

class FormExtensionDivLayoutTest extends AbstractDivLayoutTest
{
protected $extension;

protected function setUp()
{
if (!class_exists('Symfony\Component\Locale\Locale')) {
$this->markTestSkipped('The "Locale" component is not available');
}

if (!class_exists('Symfony\Component\EventDispatcher\EventDispatcher')) {
$this->markTestSkipped('The "EventDispatcher" component is not available');
}

if (!class_exists('Symfony\Component\Form\Form')) {
$this->markTestSkipped('The "Form" component is not available');
}

if (!class_exists('Twig_Environment')) {
$this->markTestSkipped('Twig is not available.');
}

parent::setUp();

$loader = new StubFilesystemLoader(array(
__DIR__.'/../../../../../../src/Symfony/Bridge/Twig/Resources/views/Form',
__DIR__,
));

$this->extension = new FormExtension($this->getMock('Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface'), array(
'form_div_layout.html.twig',
'custom_widgets.html.twig',
));

$environment = new \Twig_Environment($loader);
$environment->addExtension($this->extension);
$environment->addExtension(new TranslationExtension(new StubTranslator()));

$this->extension->initRuntime($environment);
}

protected function tearDown()
{
parent::tearDown();

$this->extension = null;
}

public function testThemeBlockInheritanceUsingUse()
{
$view = $this->factory
->createNamed('email', 'name')
->createView()
;

$this->setTheme($view, array('theme_use.html.twig'));

$this->assertMatchesXpath(
$this->renderWidget($view),
'/input[@type="email"][@rel="theme"]'
);
}

public function testThemeBlockInheritanceUsingExtend()
{
$view = $this->factory
->createNamed('email', 'name')
->createView()
;

$this->setTheme($view, array('theme_extends.html.twig'));

$this->assertMatchesXpath(
$this->renderWidget($view),
'/input[@type="email"][@rel="theme"]'
);
}

protected function renderEnctype(FormView $view)
{
return (string)$this->extension->renderEnctype($view);
}

protected function renderLabel(FormView $view, $label = null, array $vars = array())
{
return (string)$this->extension->renderLabel($view, $label, $vars);
}

protected function renderErrors(FormView $view)
{
return (string)$this->extension->renderErrors($view);
}

protected function renderWidget(FormView $view, array $vars = array())
{
return (string)$this->extension->renderWidget($view, $vars);
}

protected function renderRow(FormView $view, array $vars = array())
{
return (string)$this->extension->renderRow($view, $vars);
}

protected function renderRest(FormView $view, array $vars = array())
{
return (string)$this->extension->renderRest($view, $vars);
}

protected function setTheme(FormView $view, array $themes)
{
$this->extension->setTheme($view, $themes);
}

static public function themeBlockInheritanceProvider()
{
return array(
array(array('theme.html.twig'))
);
}

static public function themeInheritanceProvider()
{
return array(
array(array('parent_label.html.twig'), array('child_label.html.twig'))
);
}
}
103 changes: 103 additions & 0 deletions Tests/Extension/FormExtensionTableLayoutTest.php
@@ -0,0 +1,103 @@
<?php

/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Symfony\Bridge\Twig\Tests\Extension;

use Symfony\Component\Form\FormView;
use Symfony\Bridge\Twig\Extension\FormExtension;
use Symfony\Bridge\Twig\Extension\TranslationExtension;
use Symfony\Component\Form\Tests\AbstractTableLayoutTest;
use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator;
use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubFilesystemLoader;

class FormExtensionTableLayoutTest extends AbstractTableLayoutTest
{
protected $extension;

protected function setUp()
{
if (!class_exists('Symfony\Component\Locale\Locale')) {
$this->markTestSkipped('The "Locale" component is not available');
}

if (!class_exists('Symfony\Component\EventDispatcher\EventDispatcher')) {
$this->markTestSkipped('The "EventDispatcher" component is not available');
}

if (!class_exists('Symfony\Component\Form\Form')) {
$this->markTestSkipped('The "Form" component is not available');
}

if (!class_exists('Twig_Environment')) {
$this->markTestSkipped('Twig is not available.');
}

parent::setUp();

$loader = new StubFilesystemLoader(array(
__DIR__.'/../../../../../../src/Symfony/Bridge/Twig/Resources/views/Form',
__DIR__,
));

$this->extension = new FormExtension($this->getMock('Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface'), array(
'form_table_layout.html.twig',
'custom_widgets.html.twig',
));

$environment = new \Twig_Environment($loader);
$environment->addExtension($this->extension);
$environment->addExtension(new TranslationExtension(new StubTranslator()));

$this->extension->initRuntime($environment);
}

protected function tearDown()
{
parent::tearDown();

$this->extension = null;
}

protected function renderEnctype(FormView $view)
{
return (string)$this->extension->renderEnctype($view);
}

protected function renderLabel(FormView $view, $label = null, array $vars = array())
{
return (string)$this->extension->renderLabel($view, $label, $vars);
}

protected function renderErrors(FormView $view)
{
return (string)$this->extension->renderErrors($view);
}

protected function renderWidget(FormView $view, array $vars = array())
{
return (string)$this->extension->renderWidget($view, $vars);
}

protected function renderRow(FormView $view, array $vars = array())
{
return (string)$this->extension->renderRow($view, $vars);
}

protected function renderRest(FormView $view, array $vars = array())
{
return (string)$this->extension->renderRest($view, $vars);
}

protected function setTheme(FormView $view, array $themes)
{
$this->extension->setTheme($view, $themes);
}
}

0 comments on commit b1301ae

Please sign in to comment.