]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - tests/CachedPageTest.php
CachedPage: move to a proper file, add tests
[github/shaarli/Shaarli.git] / tests / CachedPageTest.php
diff --git a/tests/CachedPageTest.php b/tests/CachedPageTest.php
new file mode 100644 (file)
index 0000000..e97af03
--- /dev/null
@@ -0,0 +1,121 @@
+<?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()
+        );
+    }
+}