]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - tests/CacheTest.php
CachedPage: move to a proper file, add tests
[github/shaarli/Shaarli.git] / tests / CacheTest.php
diff --git a/tests/CacheTest.php b/tests/CacheTest.php
new file mode 100644 (file)
index 0000000..4caf655
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+/**
+ * Cache tests
+ */
+
+// required to access $_SESSION array
+session_start();
+
+require_once 'application/Cache.php';
+
+/**
+ * Unitary tests for cached pages
+ */
+class CachedTest extends PHPUnit_Framework_TestCase
+{
+    // test cache directory
+    protected static $testCacheDir = 'tests/dummycache';
+
+    // dummy cached file names / content
+    protected static $pages = array('a', 'toto', 'd7b59c');
+
+
+    /**
+     * Populate the cache with dummy files
+     */
+    public function setUp()
+    {
+        if (! is_dir(self::$testCacheDir)) {
+            mkdir(self::$testCacheDir);
+        }
+        
+        foreach (self::$pages as $page) {
+            file_put_contents(self::$testCacheDir.'/'.$page.'.cache', $page);
+        }
+    }
+
+    /**
+     * Purge cached pages
+     */
+    public function testPurgeCachedPages()
+    {
+        purgeCachedPages(self::$testCacheDir);
+        foreach (self::$pages as $page) {
+            $this->assertFileNotExists(self::$testCacheDir.'/'.$page.'.cache');
+        }        
+    }
+
+    /**
+     * Purge cached pages and session cache
+     */
+    public function testInvalidateCaches()
+    {
+        $this->assertArrayNotHasKey('tags', $_SESSION);
+        $_SESSION['tags'] = array('goodbye', 'cruel', 'world');
+
+        invalidateCaches(self::$testCacheDir);
+        foreach (self::$pages as $page) {
+            $this->assertFileNotExists(self::$testCacheDir.'/'.$page.'.cache');
+        }        
+
+        $this->assertArrayNotHasKey('tags', $_SESSION);
+    }
+}