2010-03-18 14:26:21 +00:00
< ? php
/*
2010-04-25 16:06:54 +01:00
* This file is part of the Symfony package .
2010-03-18 14:26:21 +00:00
*
2011-03-06 11:40:06 +00:00
* ( c ) Fabien Potencier < fabien @ symfony . com >
2010-04-07 02:07:59 +01:00
*
2010-03-18 14:26:21 +00:00
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
2010-08-20 22:09:55 +01:00
namespace Symfony\Tests\Component\Templating\Loader ;
2010-03-18 14:26:21 +00:00
2010-06-28 08:31:54 +01:00
require_once __DIR__ . '/../Fixtures/ProjectTemplateDebugger.php' ;
2010-03-18 14:26:21 +00:00
2010-08-20 22:09:55 +01:00
use Symfony\Component\Templating\Loader\FilesystemLoader ;
use Symfony\Component\Templating\Storage\FileStorage ;
2011-02-10 17:20:44 +00:00
use Symfony\Component\Templating\TemplateReference ;
2010-03-18 14:26:21 +00:00
class FilesystemLoaderTest extends \PHPUnit_Framework_TestCase
{
2010-05-06 12:25:53 +01:00
static protected $fixturesPath ;
2010-03-18 14:26:21 +00:00
2010-05-06 12:25:53 +01:00
static public function setUpBeforeClass ()
{
2010-06-28 08:31:54 +01:00
self :: $fixturesPath = realpath ( __DIR__ . '/../Fixtures/' );
2010-05-06 12:25:53 +01:00
}
2010-03-18 14:26:21 +00:00
2010-05-06 12:25:53 +01:00
public function testConstructor ()
{
2011-01-26 13:53:12 +00:00
$pathPattern = self :: $fixturesPath . '/templates/%name%.%engine%' ;
2010-05-06 12:25:53 +01:00
$path = self :: $fixturesPath . '/templates' ;
2011-01-26 13:53:12 +00:00
$loader = new ProjectTemplateLoader2 ( $pathPattern );
2010-05-06 12:25:53 +01:00
$this -> assertEquals ( array ( $pathPattern ), $loader -> getTemplatePathPatterns (), '__construct() takes a path as its second argument' );
2011-01-26 13:53:12 +00:00
$loader = new ProjectTemplateLoader2 ( array ( $pathPattern ));
2010-05-06 12:25:53 +01:00
$this -> assertEquals ( array ( $pathPattern ), $loader -> getTemplatePathPatterns (), '__construct() takes an array of paths as its second argument' );
}
2010-03-18 14:26:21 +00:00
2010-05-06 12:25:53 +01:00
public function testIsAbsolutePath ()
{
$this -> assertTrue ( ProjectTemplateLoader2 :: isAbsolutePath ( '/foo.xml' ), '->isAbsolutePath() returns true if the path is an absolute path' );
$this -> assertTrue ( ProjectTemplateLoader2 :: isAbsolutePath ( 'c:\\\\foo.xml' ), '->isAbsolutePath() returns true if the path is an absolute path' );
$this -> assertTrue ( ProjectTemplateLoader2 :: isAbsolutePath ( 'c:/foo.xml' ), '->isAbsolutePath() returns true if the path is an absolute path' );
$this -> assertTrue ( ProjectTemplateLoader2 :: isAbsolutePath ( '\\server\\foo.xml' ), '->isAbsolutePath() returns true if the path is an absolute path' );
}
2010-03-18 14:26:21 +00:00
2010-05-06 12:25:53 +01:00
public function testLoad ()
{
2011-01-13 13:58:17 +00:00
$pathPattern = self :: $fixturesPath . '/templates/%name%' ;
2010-05-06 12:25:53 +01:00
$path = self :: $fixturesPath . '/templates' ;
2011-01-26 13:53:12 +00:00
$loader = new ProjectTemplateLoader2 ( $pathPattern );
2011-02-10 17:20:44 +00:00
$storage = $loader -> load ( new TemplateReference ( $path . '/foo.php' , 'php' ));
2010-08-20 22:09:55 +01:00
$this -> assertInstanceOf ( 'Symfony\Component\Templating\Storage\FileStorage' , $storage , '->load() returns a FileStorage if you pass an absolute path' );
2010-05-06 12:25:53 +01:00
$this -> assertEquals ( $path . '/foo.php' , ( string ) $storage , '->load() returns a FileStorage pointing to the passed absolute path' );
2010-03-18 14:26:21 +00:00
2011-02-10 17:20:44 +00:00
$this -> assertFalse ( $loader -> load ( new TemplateReference ( 'bar' , 'php' )), '->load() returns false if the template is not found' );
2010-03-18 14:26:21 +00:00
2011-02-10 17:20:44 +00:00
$storage = $loader -> load ( new TemplateReference ( 'foo.php' , 'php' ));
2010-08-20 22:09:55 +01:00
$this -> assertInstanceOf ( 'Symfony\Component\Templating\Storage\FileStorage' , $storage , '->load() returns a FileStorage if you pass a relative template that exists' );
2010-05-06 12:25:53 +01:00
$this -> assertEquals ( $path . '/foo.php' , ( string ) $storage , '->load() returns a FileStorage pointing to the absolute path of the template' );
2010-03-18 14:26:21 +00:00
2011-01-26 13:53:12 +00:00
$loader = new ProjectTemplateLoader2 ( $pathPattern );
2010-05-06 12:25:53 +01:00
$loader -> setDebugger ( $debugger = new \ProjectTemplateDebugger ());
2011-02-10 17:20:44 +00:00
$this -> assertFalse ( $loader -> load ( new TemplateReference ( 'foo.xml' , 'php' )), '->load() returns false if the template does not exists for the given engine' );
2010-05-06 12:25:53 +01:00
$this -> assertTrue ( $debugger -> hasMessage ( 'Failed loading template' ), '->load() logs a "Failed loading template" message if the template is not found' );
2010-03-18 14:26:21 +00:00
2011-01-26 13:53:12 +00:00
$loader = new ProjectTemplateLoader2 ( array ( self :: $fixturesPath . '/null/%name%' , $pathPattern ));
2010-05-06 12:25:53 +01:00
$loader -> setDebugger ( $debugger = new \ProjectTemplateDebugger ());
2011-02-10 17:20:44 +00:00
$loader -> load ( new TemplateReference ( 'foo.php' , 'php' ));
2010-05-06 12:25:53 +01:00
$this -> assertTrue ( $debugger -> hasMessage ( 'Loaded template file' ), '->load() logs a "Loaded template file" message if the template is found' );
}
2010-03-18 14:26:21 +00:00
}
class ProjectTemplateLoader2 extends FilesystemLoader
{
2010-05-06 12:25:53 +01:00
public function getTemplatePathPatterns ()
{
return $this -> templatePathPatterns ;
}
2010-03-18 14:26:21 +00:00
2010-05-06 12:25:53 +01:00
static public function isAbsolutePath ( $path )
{
return parent :: isAbsolutePath ( $path );
}
2010-03-18 14:26:21 +00:00
}