diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/avatar/manager_test.php | 114 | 
1 files changed, 92 insertions, 22 deletions
diff --git a/tests/avatar/manager_test.php b/tests/avatar/manager_test.php index cb895b521a..d8ab1f38ae 100644 --- a/tests/avatar/manager_test.php +++ b/tests/avatar/manager_test.php @@ -11,6 +11,8 @@ require_once dirname(__FILE__) . '/driver/foobar.php';  class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase  { +	protected $user; +  	public function setUp()  	{  		global $phpbb_root_path, $phpEx; @@ -19,24 +21,35 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase  		$this->phpbb_container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface');  		$this->phpbb_container->expects($this->any())  			->method('get') -			->with('avatar.driver.foobar')->will($this->returnValue('avatar.driver.foobar')); +			->will($this->returnArgument(0));  		// Prepare dependencies for avatar manager and driver  		$config = new phpbb_config(array());  		$request = $this->getMock('phpbb_request');  		$cache = $this->getMock('phpbb_cache_driver_interface'); +		// $this->avatar_foobar will be needed later on  		$this->avatar_foobar = $this->getMock('phpbb_avatar_driver_foobar', array('get_name'), array($config, $phpbb_root_path, $phpEx, $cache));  		$this->avatar_foobar->expects($this->any()) -            ->method('get_name') -            ->will($this->returnValue('avatar.driver.foobar')); +			->method('get_name') +			->will($this->returnValue('avatar.driver.foobar')); +		// barfoo driver can't be mocked with constructor arguments  		$this->avatar_barfoo = $this->getMock('phpbb_avatar_driver_barfoo', array('get_name'));  		$this->avatar_barfoo->expects($this->any()) -            ->method('get_name') -            ->will($this->returnValue('avatar.driver.barfoo')); - +			->method('get_name') +			->will($this->returnValue('avatar.driver.barfoo'));  		$avatar_drivers = array($this->avatar_foobar, $this->avatar_barfoo); +		foreach ($this->avatar_drivers() as $driver) +		{ +			$cur_avatar = $this->getMock('phpbb_avatar_driver_' . $driver, array('get_name'), array($config, $phpbb_root_path, $phpEx, $cache)); +			$cur_avatar->expects($this->any()) +				->method('get_name') +				->will($this->returnValue('avatar.driver.' . $driver)); +			$config['allow_avatar_' . get_class($cur_avatar)] = false; +			$avatar_drivers[] = $cur_avatar; +		} +  		$config['allow_avatar_' . get_class($this->avatar_foobar)] = true;  		$config['allow_avatar_' . get_class($this->avatar_barfoo)] = false; @@ -44,28 +57,27 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase  		$this->manager = new phpbb_avatar_manager($config, $avatar_drivers, $this->phpbb_container);  	} -	public function test_get_driver() +	protected function avatar_drivers()  	{ -		$driver = $this->manager->get_driver('avatar.driver.foobar', false); -		$this->assertEquals('avatar.driver.foobar', $driver); - -		$driver = $this->manager->get_driver('avatar.driver.foo_wrong', false); -		$this->assertNull($driver); - -		$driver = $this->manager->get_driver('avatar.driver.foobar'); -		$this->assertEquals('avatar.driver.foobar', $driver); - -		$driver = $this->manager->get_driver('avatar.driver.foo_wrong'); -		$this->assertNull($driver); +		return array( +			'local', +			'upload', +			'remote', +			'gravatar', +		);  	}  	public function test_get_all_drivers()  	{  		$drivers = $this->manager->get_all_drivers(); -		$this->assertArrayHasKey('avatar.driver.foobar', $drivers); -		$this->assertArrayHasKey('avatar.driver.barfoo', $drivers); -		$this->assertEquals('avatar.driver.foobar', $drivers['avatar.driver.foobar']); -		$this->assertEquals('avatar.driver.barfoo', $drivers['avatar.driver.barfoo']); +		$this->assertEquals(array( +			'avatar.driver.barfoo' => 'avatar.driver.barfoo', +			'avatar.driver.foobar' => 'avatar.driver.foobar', +			'avatar.driver.local' => 'avatar.driver.local', +			'avatar.driver.remote' => 'avatar.driver.remote', +			'avatar.driver.upload' => 'avatar.driver.upload', +			'avatar.driver.gravatar' => 'avatar.driver.gravatar', +		), $drivers);  	}  	public function test_get_enabled_drivers() @@ -76,6 +88,30 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase  		$this->assertEquals('avatar.driver.foobar', $drivers['avatar.driver.foobar']);  	} +	public function get_driver_data() +	{ +		return array( +			array('avatar.driver.foobar', 'avatar.driver.foobar', false), +			array('avatar.driver.foo_wrong', NULL, false), +			array('avatar.driver.foobar', 'avatar.driver.foobar'), +			array('avatar.driver.foo_wrong', NULL), +			array('avatar.driver.local', 'avatar.driver.local', false), +			array(AVATAR_GALLERY, 'avatar.driver.local', false), +			array(AVATAR_UPLOAD, 'avatar.driver.upload', false), +			array(AVATAR_REMOTE, 'avatar.driver.remote', false), +			array(AVATAR_GALLERY, NULL), +		); +	} + +	/** +	* @dataProvider get_driver_data +	*/ +	public function test_get_driver($driver_name, $expected, $enabled_only = true) +	{ +		$driver = $this->manager->get_driver($driver_name, $enabled_only); +		$this->assertEquals($expected, $driver); +	} +  	public function test_get_avatar_settings()  	{  		$avatar_settings = $this->manager->get_avatar_settings($this->avatar_foobar); @@ -157,4 +193,38 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase  			$this->assertArrayHasKey($key, $cleaned_row);  		}  	} + +	public function test_clean_driver_name() +	{ +		$this->assertEquals('avatar.driver.local', $this->manager->clean_driver_name('avatar_driver_local')); +	} + +	public function test_prepare_driver_name() +	{ +		$this->assertEquals('avatar_driver_local', $this->manager->prepare_driver_name('avatar.driver.local')); +	} + +	public function test_localize_errors() +	{ +		$this->user = $this->getMock('phpbb_user'); +		$lang_array = array( +			array('FOOBAR_OFF', 'foobar_off'), +			array('FOOBAR_EXPLAIN', 'FOOBAR_EXPLAIN %s'), +		); +		$this->user->expects($this->any()) +			->method('lang') +			->will($this->returnValueMap($lang_array)); + +		// Pass error as string +		$this->assertEquals(array('foobar_off'), $this->manager->localize_errors($this->user, array('FOOBAR_OFF'))); + +		// Pass error as array for vsprintf() +		$this->assertEquals(array('FOOBAR_EXPLAIN foo'), $this->manager->localize_errors($this->user, array(array('FOOBAR_EXPLAIN', 'foo')))); + +		// Pass both types +		$this->assertEquals(array('foobar_off', 'FOOBAR_EXPLAIN foo'), $this->manager->localize_errors($this->user, array( +			'FOOBAR_OFF', +			array('FOOBAR_EXPLAIN', 'foo'), +		))); +	}  }  | 
