mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge pull request #6131 from kinglozzer/ssviewer-caching-tests
Tests to cover caching repeated template lookups
This commit is contained in:
commit
f2ac6e30aa
@ -1518,6 +1518,34 @@ EOC;
|
||||
}
|
||||
}
|
||||
|
||||
public function testRepeatedCallsAreCached() {
|
||||
$data = new SSViewerTest_CacheTestData();
|
||||
$template = '
|
||||
<% if $TestWithCall %>
|
||||
<% with $TestWithCall %>
|
||||
{$Message}
|
||||
<% end_with %>
|
||||
|
||||
{$TestWithCall.Message}
|
||||
<% end_if %>';
|
||||
|
||||
$this->assertEquals('HiHi', preg_replace('/\s+/', '', $this->render($template, $data)));
|
||||
$this->assertEquals(1, $data->testWithCalls,
|
||||
'SSViewerTest_CacheTestData::TestWithCall() should only be called once. Subsequent calls should be cached');
|
||||
|
||||
$data = new SSViewerTest_CacheTestData();
|
||||
$template = '
|
||||
<% if $TestLoopCall %>
|
||||
<% loop $TestLoopCall %>
|
||||
{$Message}
|
||||
<% end_loop %>
|
||||
<% end_if %>';
|
||||
|
||||
$this->assertEquals('OneTwo', preg_replace('/\s+/', '', $this->render($template, $data)));
|
||||
$this->assertEquals(1, $data->testLoopCalls,
|
||||
'SSViewerTest_CacheTestData::TestLoopCall() should only be called once. Subsequent calls should be cached');
|
||||
}
|
||||
|
||||
public function testClosedBlockExtension() {
|
||||
$count = 0;
|
||||
$parser = new SSTemplateParser();
|
||||
@ -1647,6 +1675,26 @@ class SSViewerTest_ViewableData extends ViewableData implements TestOnly {
|
||||
}
|
||||
}
|
||||
|
||||
class SSViewerTest_CacheTestData extends ViewableData implements TestOnly {
|
||||
|
||||
public $testWithCalls = 0;
|
||||
public $testLoopCalls = 0;
|
||||
|
||||
public function TestWithCall() {
|
||||
$this->testWithCalls++;
|
||||
return ArrayData::create(array('Message' => 'Hi'));
|
||||
}
|
||||
|
||||
public function TestLoopCall() {
|
||||
$this->testLoopCalls++;
|
||||
return ArrayList::create(array(
|
||||
ArrayData::create(array('Message' => 'One')),
|
||||
ArrayData::create(array('Message' => 'Two'))
|
||||
));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class SSViewerTest_Object extends DataObject implements TestOnly {
|
||||
|
||||
public $number = null;
|
||||
|
Loading…
Reference in New Issue
Block a user