A super easy PHP Framework for web development!
https://github.com/exacti/phacil-framework
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
187 lines
6.4 KiB
187 lines
6.4 KiB
11 months ago
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
use PHPUnit\Framework\TestCase;
|
||
|
|
||
|
abstract class CommonBackendTest extends TestCase
|
||
|
{
|
||
|
protected Cm_Cache_Backend_Redis $_instance;
|
||
|
protected $_className;
|
||
|
|
||
|
public function __construct($name = null, array $data = array(), $dataName = '')
|
||
|
{
|
||
|
$this->_className = $name;
|
||
|
date_default_timezone_set('UTC');
|
||
|
parent::__construct($name, $data, $dataName);
|
||
|
}
|
||
|
|
||
|
public function setUp($noTag = false): void
|
||
|
{
|
||
|
$this->_instance->setDirectives(array('logging' => false));
|
||
|
if ($noTag) {
|
||
|
$this->_instance->save('bar : data to cache', 'bar');
|
||
|
$this->_instance->save('bar2 : data to cache', 'bar2');
|
||
|
$this->_instance->save('bar3 : data to cache', 'bar3');
|
||
|
} else {
|
||
|
$this->_instance->save('bar : data to cache', 'bar', array('tag3', 'tag4'));
|
||
|
$this->_instance->save('bar2 : data to cache', 'bar2', array('tag3', 'tag1'));
|
||
|
$this->_instance->save('bar3 : data to cache', 'bar3', array('tag2', 'tag3'));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function tearDown(): void
|
||
|
{
|
||
|
$this->_instance->clean();
|
||
|
}
|
||
|
|
||
|
public function testConstructorBadOption(): void
|
||
|
{
|
||
|
$this->expectException('Zend_Cache_Exception');
|
||
|
new Cm_Cache_Backend_Redis(array(1 => 'bar'));
|
||
|
}
|
||
|
|
||
|
public function testSetDirectivesBadArgument(): void
|
||
|
{
|
||
|
$this->expectException('Zend_Cache_Exception');
|
||
|
$this->_instance->setDirectives('foo');
|
||
|
}
|
||
|
|
||
|
public function testSetDirectivesBadDirective(): void
|
||
|
{
|
||
|
// A bad directive (not known by a specific backend) is possible
|
||
|
// => so no exception here
|
||
|
$this->expectNotToPerformAssertions();
|
||
|
$this->_instance->setDirectives(array('foo' => true, 'lifetime' => 3600));
|
||
|
}
|
||
|
|
||
|
public function testSetDirectivesBadDirective2(): void
|
||
|
{
|
||
|
$this->expectException('Zend_Cache_Exception');
|
||
|
$this->_instance->setDirectives(array('foo' => true, 12 => 3600));
|
||
|
}
|
||
|
|
||
|
public function testSaveCorrectCall(): void
|
||
|
{
|
||
|
$res = $this->_instance->save('data to cache', 'foo', array('tag1', 'tag2'));
|
||
|
$this->assertTrue($res);
|
||
|
}
|
||
|
|
||
|
public function testSaveWithNullLifeTime(): void
|
||
|
{
|
||
|
$this->_instance->setDirectives(array('lifetime' => null));
|
||
|
$res = $this->_instance->save('data to cache', 'foo', array('tag1', 'tag2'));
|
||
|
$this->assertTrue($res);
|
||
|
}
|
||
|
|
||
|
public function testSaveWithSpecificLifeTime(): void
|
||
|
{
|
||
|
$this->_instance->setDirectives(array('lifetime' => 3600));
|
||
|
$res = $this->_instance->save('data to cache', 'foo', array('tag1', 'tag2'), 10);
|
||
|
$this->assertTrue($res);
|
||
|
}
|
||
|
|
||
|
public function testRemoveCorrectCall(): void
|
||
|
{
|
||
|
$this->assertTrue($this->_instance->remove('bar'));
|
||
|
$this->assertFalse($this->_instance->test('bar'));
|
||
|
$this->assertFalse($this->_instance->remove('barbar'));
|
||
|
$this->assertFalse($this->_instance->test('barbar'));
|
||
|
}
|
||
|
|
||
|
public function testTestWithAnExistingCacheId(): void
|
||
|
{
|
||
|
$res = $this->_instance->test('bar');
|
||
|
$this->assertNotEmpty($res);
|
||
|
$this->assertGreaterThan(999999, $res);
|
||
|
}
|
||
|
|
||
|
public function testTestWithANonExistingCacheId(): void
|
||
|
{
|
||
|
$this->assertFalse($this->_instance->test('barbar'));
|
||
|
}
|
||
|
|
||
|
public function testTestWithAnExistingCacheIdAndANullLifeTime(): void
|
||
|
{
|
||
|
$this->_instance->setDirectives(array('lifetime' => null));
|
||
|
$res = $this->_instance->test('bar');
|
||
|
$this->assertNotEmpty($res);
|
||
|
$this->assertGreaterThan(999999, $res);
|
||
|
}
|
||
|
|
||
|
public function testGetWithANonExistingCacheId(): void
|
||
|
{
|
||
|
$this->assertFalse($this->_instance->load('barbar'));
|
||
|
}
|
||
|
|
||
|
public function testGetWithAnExistingCacheId(): void
|
||
|
{
|
||
|
$this->assertEquals('bar : data to cache', $this->_instance->load('bar'));
|
||
|
}
|
||
|
|
||
|
public function testGetWithAnExistingCacheIdAndUTFCharacters(): void
|
||
|
{
|
||
|
$data = '"""""' . "'" . '\n' . 'ééééé';
|
||
|
$this->_instance->save($data, 'foo');
|
||
|
$this->assertEquals($data, $this->_instance->load('foo'));
|
||
|
}
|
||
|
|
||
|
public function testGetWithAnExpiredCacheId(): void
|
||
|
{
|
||
|
$this->_instance->___expire('bar');
|
||
|
$this->_instance->setDirectives(array('lifetime' => -1));
|
||
|
$this->assertFalse($this->_instance->load('bar'));
|
||
|
$this->assertEquals('bar : data to cache', $this->_instance->load('bar', true));
|
||
|
}
|
||
|
|
||
|
public function testCleanModeAll(): void
|
||
|
{
|
||
|
$this->assertTrue($this->_instance->clean('all'));
|
||
|
$this->assertFalse($this->_instance->test('bar'));
|
||
|
$this->assertFalse($this->_instance->test('bar2'));
|
||
|
}
|
||
|
|
||
|
public function testCleanModeOld(): void
|
||
|
{
|
||
|
$this->_instance->___expire('bar2');
|
||
|
$this->assertTrue($this->_instance->clean('old'));
|
||
|
$this->assertTrue($this->_instance->test('bar') > 999999);
|
||
|
$this->assertFalse($this->_instance->test('bar2'));
|
||
|
}
|
||
|
|
||
|
public function testCleanModeMatchingTags(): void
|
||
|
{
|
||
|
$this->assertTrue($this->_instance->clean('matchingTag', array('tag3')));
|
||
|
$this->assertFalse($this->_instance->test('bar'));
|
||
|
$this->assertFalse($this->_instance->test('bar2'));
|
||
|
}
|
||
|
|
||
|
public function testCleanModeMatchingTags2(): void
|
||
|
{
|
||
|
$this->assertTrue($this->_instance->clean('matchingTag', array('tag3', 'tag4')));
|
||
|
$this->assertFalse($this->_instance->test('bar'));
|
||
|
$this->assertTrue($this->_instance->test('bar2') > 999999);
|
||
|
}
|
||
|
|
||
|
public function testCleanModeNotMatchingTags(): void
|
||
|
{
|
||
|
$this->assertTrue($this->_instance->clean('notMatchingTag', array('tag3')));
|
||
|
$this->assertTrue($this->_instance->test('bar') > 999999);
|
||
|
$this->assertTrue($this->_instance->test('bar2') > 999999);
|
||
|
}
|
||
|
|
||
|
public function testCleanModeNotMatchingTags2(): void
|
||
|
{
|
||
|
$this->assertTrue($this->_instance->clean('notMatchingTag', array('tag4')));
|
||
|
$this->assertTrue($this->_instance->test('bar') > 999999);
|
||
|
$this->assertFalse($this->_instance->test('bar2'));
|
||
|
}
|
||
|
|
||
|
public function testCleanModeNotMatchingTags3(): void
|
||
|
{
|
||
|
$this->assertTrue($this->_instance->clean('notMatchingTag', array('tag4', 'tag1')));
|
||
|
$this->assertTrue($this->_instance->test('bar') > 999999);
|
||
|
$this->assertTrue($this->_instance->test('bar2') > 999999);
|
||
|
$this->assertFalse($this->_instance->test('bar3'));
|
||
|
}
|
||
|
}
|