]>
git.immae.eu Git - github/shaarli/Shaarli.git/blob - tests/feed/CachedPageTest.php
5 namespace Shaarli\Feed
;
8 * Unitary tests for cached pages
10 class CachedPageTest
extends \Shaarli\TestCase
12 // test cache directory
13 protected static $testCacheDir = 'sandbox/pagecache';
14 protected static $url = 'http://shaar.li/feed/atom';
15 protected static $filename;
18 * Create the cache directory if needed
20 public static function setUpBeforeClass(): void
22 if (!is_dir(self
::$testCacheDir)) {
23 mkdir(self
::$testCacheDir);
25 self
::$filename = self
::$testCacheDir . '/' . sha1(self
::$url) . '.cache';
29 * Reset the page cache
31 protected function setUp(): void
33 if (file_exists(self
::$filename)) {
34 unlink(self
::$filename);
39 * Create a new cached page
41 public function testConstruct()
43 new CachedPage(self
::$testCacheDir, '', true, null);
44 new CachedPage(self
::$testCacheDir, '', false, null);
45 new CachedPage(self
::$testCacheDir, 'http://shaar.li/feed/rss', true, null);
46 new CachedPage(self
::$testCacheDir, 'http://shaar.li/feed/atom', false, null);
47 $this->addToAssertionCount(1);
51 * Cache a page's content
53 public function testCache()
55 $page = new CachedPage(self
::$testCacheDir, self
::$url, true, null);
57 $this->assertFileNotExists(self
::$filename);
58 $page->cache('<p>Some content</p>');
59 $this->assertFileExists(self
::$filename);
61 '<p>Some content</p>',
62 file_get_contents(self
::$filename)
67 * "Cache" a page's content - the page is not to be cached
69 public function testShouldNotCache()
71 $page = new CachedPage(self
::$testCacheDir, self
::$url, false, null);
73 $this->assertFileNotExists(self
::$filename);
74 $page->cache('<p>Some content</p>');
75 $this->assertFileNotExists(self
::$filename);
79 * Return a page's cached content
81 public function testCachedVersion()
83 $page = new CachedPage(self
::$testCacheDir, self
::$url, true, null);
85 $this->assertFileNotExists(self
::$filename);
86 $page->cache('<p>Some content</p>');
87 $this->assertFileExists(self
::$filename);
89 '<p>Some content</p>',
90 $page->cachedVersion()
95 * Return a page's cached content - the file does not exist
97 public function testCachedVersionNoFile()
99 $page = new CachedPage(self
::$testCacheDir, self
::$url, true, null);
101 $this->assertFileNotExists(self
::$filename);
104 $page->cachedVersion()
109 * Return a page's cached content - the page is not to be cached
111 public function testNoCachedVersion()
113 $page = new CachedPage(self
::$testCacheDir, self
::$url, false, null);
115 $this->assertFileNotExists(self
::$filename);
118 $page->cachedVersion()
123 * Return a page's cached content within date period
125 public function testCachedVersionInDatePeriod()
127 $period = new \
DatePeriod(
128 new \
DateTime('yesterday'),
129 new \
DateInterval('P1D'),
130 new \
DateTime('tomorrow')
132 $page = new CachedPage(self
::$testCacheDir, self
::$url, true, $period);
134 $this->assertFileNotExists(self
::$filename);
135 $page->cache('<p>Some content</p>');
136 $this->assertFileExists(self
::$filename);
138 '<p>Some content</p>',
139 $page->cachedVersion()
144 * Return a page's cached content outside of date period
146 public function testCachedVersionNotInDatePeriod()
148 $period = new \
DatePeriod(
149 new \
DateTime('yesterday noon'),
150 new \
DateInterval('P1D'),
151 new \
DateTime('yesterday midnight')
153 $page = new CachedPage(self
::$testCacheDir, self
::$url, true, $period);
155 $this->assertFileNotExists(self
::$filename);
156 $page->cache('<p>Some content</p>');
157 $this->assertFileExists(self
::$filename);
158 $this->assertNull($page->cachedVersion());