Anton Grebnev
13 years ago
2 changed files with 263 additions and 0 deletions
@ -0,0 +1,99 @@ |
|||||
|
<?php |
||||
|
|
||||
|
/* |
||||
|
* @copyright NetMonsters <team@netmonsters.ru> |
||||
|
* @link http://netmonsters.ru |
||||
|
* @package Majestic |
||||
|
* @subpackage UnitTests |
||||
|
* @since 2011-10-11 |
||||
|
* |
||||
|
* Unit tests for RedisDebug class |
||||
|
*/ |
||||
|
|
||||
|
require_once dirname(__FILE__) . '/../../exception/GeneralException.php'; |
||||
|
require_once dirname(__FILE__) . '/../../util/profiler/CommandProfiler.php'; |
||||
|
require_once dirname(__FILE__) . '/../../util/profiler/Profiler.php'; |
||||
|
require_once dirname(__FILE__) . '/../../redis/RedisDebug.php'; |
||||
|
|
||||
|
class RedisDebugTest extends PHPUnit_Framework_TestCase |
||||
|
{ |
||||
|
|
||||
|
public function run(PHPUnit_Framework_TestResult $result = NULL) |
||||
|
{ |
||||
|
$this->setPreserveGlobalState(false); |
||||
|
return parent::run($result); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @expectedException GeneralException |
||||
|
*/ |
||||
|
public function testConstructException() |
||||
|
{ |
||||
|
$redisDebug = new RedisDebug('redis'); |
||||
|
} |
||||
|
|
||||
|
public function testConstructGood() |
||||
|
{ |
||||
|
$mock = $this->getMock('Redis'); |
||||
|
$redisDebug = new RedisDebug($mock); |
||||
|
|
||||
|
$class = new ReflectionClass('RedisDebug'); |
||||
|
$redis = $class->getProperty('redis'); |
||||
|
$redis->setAccessible(true); |
||||
|
$redis = $redis->getValue($redisDebug); |
||||
|
|
||||
|
$this->assertSame($mock, $redis); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @runInSeparateProcess |
||||
|
*/ |
||||
|
public function testCallSimpleParams() |
||||
|
{ |
||||
|
if (!defined('DEBUG')) { |
||||
|
define('DEBUG', true); |
||||
|
} |
||||
|
$mock = $this->getMock('Redis', array('connect')); |
||||
|
|
||||
|
$mock->expects($this->once()) |
||||
|
->method('connect') |
||||
|
->with($this->equalTo('localhost'), $this->equalTo(4322)) |
||||
|
->will($this->returnValue(true)); |
||||
|
|
||||
|
$redisDebug = new RedisDebug($mock); |
||||
|
$this->assertTrue($redisDebug->connect('localhost', 4322)); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @runInSeparateProcess |
||||
|
*/ |
||||
|
public function testCallArrayParam() |
||||
|
{ |
||||
|
if (!defined('DEBUG')) { |
||||
|
define('DEBUG', true); |
||||
|
} |
||||
|
$mock = $this->getMock('Redis', array('connect')); |
||||
|
|
||||
|
$mock->expects($this->once()) |
||||
|
->method('connect') |
||||
|
->with($this->equalTo(array('localhost', 4322))) |
||||
|
->will($this->returnValue(true)); |
||||
|
|
||||
|
$redisDebug = new RedisDebug($mock); |
||||
|
$this->assertTrue($redisDebug->connect(array('localhost', 4322))); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @expectedException Exception |
||||
|
* @runInSeparateProcess |
||||
|
*/ |
||||
|
public function testCallUndefinedMethod() |
||||
|
{ |
||||
|
if (!defined('DEBUG')) { |
||||
|
define('DEBUG', true); |
||||
|
} |
||||
|
$mock = $this->getMock('Redis', array('connect')); |
||||
|
$redisDebug = new RedisDebug($mock); |
||||
|
$this->assertNull($redisDebug->nothing('localhost', 4322)); |
||||
|
} |
||||
|
} |
@ -0,0 +1,164 @@ |
|||||
|
<?php |
||||
|
|
||||
|
/* |
||||
|
* @copyright NetMonsters <team@netmonsters.ru> |
||||
|
* @link http://netmonsters.ru |
||||
|
* @package Majestic |
||||
|
* @subpackage UnitTests |
||||
|
* @since 2011-10-11 |
||||
|
* |
||||
|
* Unit tests for RedisManager class |
||||
|
*/ |
||||
|
|
||||
|
require_once dirname(__FILE__) . '/../../Registry.php'; |
||||
|
require_once dirname(__FILE__) . '/../../Config.php'; |
||||
|
require_once dirname(__FILE__) . '/../../redis/RedisManager.php'; |
||||
|
|
||||
|
class RedisManagerTest extends PHPUnit_Framework_TestCase |
||||
|
{ |
||||
|
|
||||
|
private $connections; |
||||
|
|
||||
|
|
||||
|
public function run(PHPUnit_Framework_TestResult $result = NULL) |
||||
|
{ |
||||
|
$this->setPreserveGlobalState(false); |
||||
|
return parent::run($result); |
||||
|
} |
||||
|
|
||||
|
public function setUp() |
||||
|
{ |
||||
|
$this->getMock('Redis'); |
||||
|
|
||||
|
$conf = Config::getInstance(); |
||||
|
if ($conf->offsetExists('Redis')) { |
||||
|
$conf->offsetUnset('Redis'); |
||||
|
} |
||||
|
|
||||
|
$class = new ReflectionClass('RedisManager'); |
||||
|
$this->connections = $class->getProperty('connections'); |
||||
|
$this->connections->setAccessible(true); |
||||
|
$this->connections->setValue(null, array()); |
||||
|
|
||||
|
set_new_overload(array($this, 'newCallback')); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @expectedException Exception |
||||
|
* @expectedExceptionMessage Trying to get property of non-object |
||||
|
* @TODO: line 34: $config = Config::get('Redis')->$name; - check for Redis config existence |
||||
|
*/ |
||||
|
public function testConnectNoAnyConfig() |
||||
|
{ |
||||
|
RedisManager::connect(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @expectedException Exception |
||||
|
* @expectedExceptionMessage Connection parameters must be an array |
||||
|
*/ |
||||
|
public function testConnectWrongPersistantConfig() |
||||
|
{ |
||||
|
Config::set('Redis', array('new' => 'some')); |
||||
|
RedisManager::connect('new'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @expectedException Exception |
||||
|
* @expectedExceptionMessage Connection parameters must be an array |
||||
|
*/ |
||||
|
public function testConnectDefaultConfig() |
||||
|
{ |
||||
|
Config::set('Redis', array('default' => 'some')); |
||||
|
RedisManager::connect(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @expectedException Exception |
||||
|
* @expectedExceptionMessage Failed to connect to Redis server at |
||||
|
*/ |
||||
|
public function testConnectFailedConnection() |
||||
|
{ |
||||
|
Config::set('Redis', array('new' => array('host' => 'error', 'port' => 2023, 'database' => 'some'))); |
||||
|
RedisManager::connect('new'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @expectedException Exception |
||||
|
* @expectedExceptionMessage Failed to select Redis database with index |
||||
|
*/ |
||||
|
public function testConnectEstablishedConnectionNoDb() |
||||
|
{ |
||||
|
Config::set('Redis', array('new' => array('host' => true, 'port' => 2023, 'database' => 'some'))); |
||||
|
RedisManager::connect('new'); |
||||
|
} |
||||
|
|
||||
|
public function testConnectionGood() |
||||
|
{ |
||||
|
Config::set('Redis', array('new' => array('host' => true, 'port' => 2023, 'database' => true))); |
||||
|
$redis = RedisManager::connect('new'); |
||||
|
$this->assertInstanceOf('RedisMock', $redis); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @runInSeparateProcess |
||||
|
*/ |
||||
|
public function testConnectWithDebug() |
||||
|
{ |
||||
|
if (!defined('DEBUG')) { |
||||
|
define('DEBUG', true); |
||||
|
} |
||||
|
$this->getMock('RedisDebug'); |
||||
|
|
||||
|
Config::set('Redis', array('new' => array('host' => true, 'port' => 2023, 'database' => true))); |
||||
|
$redis = RedisManager::connect('new'); |
||||
|
$this->assertInstanceOf('RedisDebugMock', $redis); |
||||
|
} |
||||
|
|
||||
|
public function testConnectWithConfigArray() |
||||
|
{ |
||||
|
$config = array('host' => true, 'port' => 2023, 'database' => true); |
||||
|
$redis = RedisManager::connect('nsew', $config); |
||||
|
$this->assertInstanceOf('RedisMock', $redis); |
||||
|
} |
||||
|
|
||||
|
protected function newCallback($className) |
||||
|
{ |
||||
|
switch ($className) { |
||||
|
case 'Redis': |
||||
|
return 'RedisMock'; |
||||
|
case 'RedisDebug': |
||||
|
return 'RedisDebugMock'; |
||||
|
default: |
||||
|
return $className; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public function tearDown() |
||||
|
{ |
||||
|
unset_new_overload(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
class RedisMock |
||||
|
{ |
||||
|
public function connect($host, $port) |
||||
|
{ |
||||
|
if ($host === true) { |
||||
|
return true; |
||||
|
} |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
public function select($dbname) |
||||
|
{ |
||||
|
if ($dbname === true) { |
||||
|
return true; |
||||
|
} |
||||
|
return false; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
class RedisDebugMock extends RedisMock |
||||
|
{ |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue