<?php /** * Piwik - free/libre analytics platform * * @link http://piwik.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ namespace Piwik\Tests\Unit; use Piwik\Cache; use Piwik\Piwik; use Piwik\Tests\Framework\TestCase\UnitTestCase; /** * @group Cache */ class CacheTest extends UnitTestCase { public function test_getLazyCache_shouldCreateAnInstanceOfLazy() { $cache = Cache::getLazyCache(); $this->assertTrue($cache instanceof Cache\Lazy); } public function test_getLazyCache_shouldAlwaysReturnTheSameInstance() { $cache1 = Cache::getLazyCache(); $cache2 = Cache::getLazyCache(); $this->assertSame($cache1, $cache2); } public function test_getEagerCache_shouldCreateAnInstanceOfEager() { $cache = Cache::getEagerCache(); $this->assertTrue($cache instanceof Cache\Eager); } public function test_getEagerCache_shouldAlwaysReturnTheSameInstance() { $cache1 = Cache::getEagerCache(); $cache2 = Cache::getEagerCache(); $this->assertSame($cache1, $cache2); } public function test_getEagerCache_shouldPersistOnceEventWasTriggered() { $storageId = 'eagercache-test-ui'; $cache = Cache::getEagerCache(); $cache->save('test', 'mycontent'); // make sure something was changed, otherwise it won't save anything /** @var \Piwik\Cache\Backend $backend */ $backend = $this->environment->getContainer()->get('Piwik\Cache\Backend'); $this->assertFalse($backend->doContains($storageId)); Piwik::postEvent('Request.dispatch.end'); // should trigger save $this->assertTrue($backend->doContains($storageId)); } public function test_getTransientCache_shouldCreateAnInstanceOfTransient() { $cache = Cache::getTransientCache(); $this->assertTrue($cache instanceof Cache\Transient); } public function test_getTransientCache_shouldAlwaysReturnTheSameInstance() { $cache1 = Cache::getTransientCache(); $cache2 = Cache::getTransientCache(); $this->assertSame($cache1, $cache2); } public function test_flushAll_shouldActuallyFlushAllCaches() { $cache1 = Cache::getTransientCache(); $cache2 = Cache::getLazyCache(); $cache3 = Cache::getEagerCache(); $cache1->save('test1', 'content'); $cache2->save('test2', 'content'); $cache3->save('test3', 'content'); $this->assertTrue($cache1->contains('test1')); $this->assertTrue($cache2->contains('test2')); $this->assertTrue($cache3->contains('test3')); Cache::flushAll(); $this->assertFalse($cache1->contains('test1')); $this->assertFalse($cache2->contains('test2')); $this->assertFalse($cache3->contains('test3')); } }