class TemplateTest extends PHPUnit_Framework_TestCase
{
private $fixture;
+ private $db;
public function setUp()
{
$this->fixture = BSApp::LoadModule('Template');
$this->fixture->setTemplateDirectory(TEST_TEMPLATE_PATH);
$this->fixture->setExtension('test.tpl');
+
+ if ($this->db == null)
+ {
+ $this->db = BSApp::LoadModule('DbMySql');
+ $this->db->connect(TEST_DB_MYSQL_HOST, TEST_DB_MYSQL_USER, TEST_DB_MYSQL_PASSWORD, TEST_DB_MYSQL_DATABASE);
+ $this->db->query("CREATE TABLE template (filename VARCHAR (250) NOT NULL, template TEXT NOT NULL, timestamp INT NOT NULL);");
+ BSApp::Registry()->db = $this->db;
+ }
+ }
+
+ public function tearDown()
+ {
+ $this->db->query("DROP TABLE IF EXISTS template");
+ @unlink(TEST_TEMPLATE_PATH . '/db.cache.test.tpl');
}
public function testFetchInvalidTemplate()
$result = $this->fixture->fetch('fetch.lang.indexmissing');
$this->assertEquals('missing " . sprintf(\'" . gettext(\'1 %1$s 2 %2$s 3 %3$s\') . "\', "a", "<strong>[MISSING SUBSTITUTION INDEX: 2]</strong>", "b") . " index', $result);
}
+
+ public function testPreParseHook()
+ {
+ $func = create_function('$tpl', 'return "this template is now cleared";');
+ $this->fixture->setPreParseHook($func);
+
+ $result = $this->fixture->fetch('hook');
+ $this->assertEquals('this template is now cleared', $result);
+ }
+
+ public function testStandardCache()
+ {
+ file_put_contents(TEST_TEMPLATE_PATH . '/cache.test.tpl', 'this file is retreived from the cache');
+ $this->fixture->cache(array('cache'));
+ unlink(TEST_TEMPLATE_PATH . '/cache.test.tpl');
+
+ try
+ {
+ $result = $this->fixture->fetch('cache');
+ $this->assertEquals('this file is retreived from the cache', $result);
+ }
+ catch (Exception $e)
+ {
+ $this->fixture('unexpected exception');
+ }
+
+ try
+ {
+ $this->fixture->cache(array('hook'));
+ $this->fail('exception expected');
+ }
+ catch (Exception $e)
+ {}
+ }
+
+ public function testDbCache()
+ {
+ $this->fixture->setDatabaseCache('template');
+
+ file_put_contents(TEST_TEMPLATE_PATH . '/db.cache.test.tpl', 'store in the database');
+ $this->fixture->cache(array('db.cache'));
+
+ $template = $this->db->queryFirst("SELECT * FROM template");
+ $this->assertNotEquals(null, $template);
+
+ $this->setUp();
+ $this->fixture->setDatabaseCache('template');
+
+ $this->fixture->cache(array('db.cache'));
+ $this->assertEquals('store in the database', $this->fixture->fetch('db.cache'));
+
+ file_put_contents(TEST_TEMPLATE_PATH . '/db.cache.test.tpl', 'store in the database, retouched');
+ touch(TEST_TEMPLATE_PATH . '/db.cache.test.tpl');
+ clearstatcache();
+ $this->setUp();
+ $this->fixture->setDatabaseCache('template');
+ $this->fixture->cache(array('db.cache'));
+ $this->setUp();
+ $this->fixture->setDatabaseCache('template');
+
+ $this->fixture->cache(array('db.cache'));
+ $this->assertEquals('store in the database, retouched', $this->fixture->fetch('db.cache'));
+ }
}
?>
\ No newline at end of file