Files
Mustache/test/Mustache/Test/Loader/ProductionFilesystemLoaderTest.php
T

104 lines
4.4 KiB
PHP

<?php
/*
* This file is part of Mustache.php.
*
* (c) 2010-2017 Justin Hileman
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
/**
* @group unit
*/
class Mustache_Test_Loader_ProductionFilesystemLoaderTest extends PHPUnit_Framework_TestCase
{
public function testConstructor()
{
$baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
$loader = new Mustache_Loader_ProductionFilesystemLoader($baseDir, array('extension' => '.ms'));
$this->assertInstanceOf('Mustache_Source', $loader->load('alpha'));
$this->assertEquals('alpha contents', $loader->load('alpha')->getSource());
$this->assertInstanceOf('Mustache_Source', $loader->load('beta.ms'));
$this->assertEquals('beta contents', $loader->load('beta.ms')->getSource());
}
public function testTrailingSlashes()
{
$baseDir = dirname(__FILE__) . '/../../../fixtures/templates/';
$loader = new Mustache_Loader_ProductionFilesystemLoader($baseDir);
$this->assertEquals('one contents', $loader->load('one')->getSource());
}
public function testConstructorWithProtocol()
{
$baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
$loader = new Mustache_Loader_ProductionFilesystemLoader('file://' . $baseDir, array('extension' => '.ms'));
$this->assertEquals('alpha contents', $loader->load('alpha')->getSource());
$this->assertEquals('beta contents', $loader->load('beta.ms')->getSource());
}
public function testLoadTemplates()
{
$baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
$loader = new Mustache_Loader_ProductionFilesystemLoader($baseDir);
$this->assertEquals('one contents', $loader->load('one')->getSource());
$this->assertEquals('two contents', $loader->load('two.mustache')->getSource());
}
public function testEmptyExtensionString()
{
$baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
$loader = new Mustache_Loader_ProductionFilesystemLoader($baseDir, array('extension' => ''));
$this->assertEquals('one contents', $loader->load('one.mustache')->getSource());
$this->assertEquals('alpha contents', $loader->load('alpha.ms')->getSource());
$loader = new Mustache_Loader_ProductionFilesystemLoader($baseDir, array('extension' => null));
$this->assertEquals('two contents', $loader->load('two.mustache')->getSource());
$this->assertEquals('beta contents', $loader->load('beta.ms')->getSource());
}
/**
* @expectedException Mustache_Exception_RuntimeException
*/
public function testMissingBaseDirThrowsException()
{
new Mustache_Loader_ProductionFilesystemLoader(dirname(__FILE__) . '/not_a_directory');
}
/**
* @expectedException Mustache_Exception_UnknownTemplateException
*/
public function testMissingTemplateThrowsException()
{
$baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
$loader = new Mustache_Loader_ProductionFilesystemLoader($baseDir);
$loader->load('fake');
}
public function testLoadWithDifferentStatProps()
{
$baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
$noStatLoader = new Mustache_Loader_ProductionFilesystemLoader($baseDir, array('stat_props' => null));
$mtimeLoader = new Mustache_Loader_ProductionFilesystemLoader($baseDir, array('stat_props' => array('mtime')));
$sizeLoader = new Mustache_Loader_ProductionFilesystemLoader($baseDir, array('stat_props' => array('size')));
$bothLoader = new Mustache_Loader_ProductionFilesystemLoader($baseDir, array('stat_props' => array('mtime', 'size')));
$noStatKey = $noStatLoader->load('one.mustache')->getKey();
$mtimeKey = $mtimeLoader->load('one.mustache')->getKey();
$sizeKey = $sizeLoader->load('one.mustache')->getKey();
$bothKey = $bothLoader->load('one.mustache')->getKey();
$this->assertNotEquals($noStatKey, $mtimeKey);
$this->assertNotEquals($noStatKey, $sizeKey);
$this->assertNotEquals($noStatKey, $bothKey);
$this->assertNotEquals($mtimeKey, $sizeKey);
$this->assertNotEquals($mtimeKey, $bothKey);
$this->assertNotEquals($sizeKey, $bothKey);
}
}