122 lines
3.1 KiB
PHP
122 lines
3.1 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* PageCache tests
|
||
|
*/
|
||
|
|
||
|
require_once 'application/CachedPage.php';
|
||
|
|
||
|
/**
|
||
|
* Unitary tests for cached pages
|
||
|
*/
|
||
|
class CachedPageTest extends PHPUnit_Framework_TestCase
|
||
|
{
|
||
|
// test cache directory
|
||
|
protected static $testCacheDir = 'tests/pagecache';
|
||
|
protected static $url = 'http://shaar.li/?do=atom';
|
||
|
protected static $filename;
|
||
|
|
||
|
/**
|
||
|
* Create the cache directory if needed
|
||
|
*/
|
||
|
public static function setUpBeforeClass()
|
||
|
{
|
||
|
if (! is_dir(self::$testCacheDir)) {
|
||
|
mkdir(self::$testCacheDir);
|
||
|
}
|
||
|
self::$filename = self::$testCacheDir.'/'.sha1(self::$url).'.cache';
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Reset the page cache
|
||
|
*/
|
||
|
public function setUp()
|
||
|
{
|
||
|
if (file_exists(self::$filename)) {
|
||
|
unlink(self::$filename);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Create a new cached page
|
||
|
*/
|
||
|
public function testConstruct()
|
||
|
{
|
||
|
new CachedPage(self::$testCacheDir, '', true);
|
||
|
new CachedPage(self::$testCacheDir, '', false);
|
||
|
new CachedPage(self::$testCacheDir, 'http://shaar.li/?do=rss', true);
|
||
|
new CachedPage(self::$testCacheDir, 'http://shaar.li/?do=atom', false);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Cache a page's content
|
||
|
*/
|
||
|
public function testCache()
|
||
|
{
|
||
|
$page = new CachedPage(self::$testCacheDir, self::$url, true);
|
||
|
|
||
|
$this->assertFileNotExists(self::$filename);
|
||
|
$page->cache('<p>Some content</p>');
|
||
|
$this->assertFileExists(self::$filename);
|
||
|
$this->assertEquals(
|
||
|
'<p>Some content</p>',
|
||
|
file_get_contents(self::$filename)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* "Cache" a page's content - the page is not to be cached
|
||
|
*/
|
||
|
public function testShouldNotCache()
|
||
|
{
|
||
|
$page = new CachedPage(self::$testCacheDir, self::$url, false);
|
||
|
|
||
|
$this->assertFileNotExists(self::$filename);
|
||
|
$page->cache('<p>Some content</p>');
|
||
|
$this->assertFileNotExists(self::$filename);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return a page's cached content
|
||
|
*/
|
||
|
public function testCachedVersion()
|
||
|
{
|
||
|
$page = new CachedPage(self::$testCacheDir, self::$url, true);
|
||
|
|
||
|
$this->assertFileNotExists(self::$filename);
|
||
|
$page->cache('<p>Some content</p>');
|
||
|
$this->assertFileExists(self::$filename);
|
||
|
$this->assertEquals(
|
||
|
'<p>Some content</p>',
|
||
|
$page->cachedVersion()
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return a page's cached content - the file does not exist
|
||
|
*/
|
||
|
public function testCachedVersionNoFile()
|
||
|
{
|
||
|
$page = new CachedPage(self::$testCacheDir, self::$url, true);
|
||
|
|
||
|
$this->assertFileNotExists(self::$filename);
|
||
|
$this->assertEquals(
|
||
|
null,
|
||
|
$page->cachedVersion()
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return a page's cached content - the page is not to be cached
|
||
|
*/
|
||
|
public function testNoCachedVersion()
|
||
|
{
|
||
|
$page = new CachedPage(self::$testCacheDir, self::$url, false);
|
||
|
|
||
|
$this->assertFileNotExists(self::$filename);
|
||
|
$this->assertEquals(
|
||
|
null,
|
||
|
$page->cachedVersion()
|
||
|
);
|
||
|
}
|
||
|
}
|