diff options
author | Marc Alexander <admin@m-a-styles.de> | 2013-06-10 16:45:27 +0200 |
---|---|---|
committer | Marc Alexander <admin@m-a-styles.de> | 2013-06-10 16:45:27 +0200 |
commit | 3703de63dd5208e0431d89e29affe3bf39cdd25a (patch) | |
tree | 143722c595269ae284e8fda9cf84d7d36c349566 /tests | |
parent | e5d02f4b0caf8dbac7acdb44b096d28660977cd2 (diff) | |
download | forums-3703de63dd5208e0431d89e29affe3bf39cdd25a.tar forums-3703de63dd5208e0431d89e29affe3bf39cdd25a.tar.gz forums-3703de63dd5208e0431d89e29affe3bf39cdd25a.tar.bz2 forums-3703de63dd5208e0431d89e29affe3bf39cdd25a.tar.xz forums-3703de63dd5208e0431d89e29affe3bf39cdd25a.zip |
[ticket/11600] Increase code test coverage of avatar manager
Currently, not all methods and their possible behaviors are tested with unit tests.
Add them for better code coverage.
PHPBB3-11600
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'), + ))); + } } |