diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/group/helper_get_name_string_test.php | 115 | ||||
| -rw-r--r-- | tests/group/helper_get_name_test.php | 31 | ||||
| -rw-r--r-- | tests/group/helper_get_rank_test.php | 43 | ||||
| -rw-r--r-- | tests/group/helper_test.php | 68 | ||||
| -rw-r--r-- | tests/group/helper_test_case.php | 123 | ||||
| -rw-r--r-- | tests/notification/group_request_test.php | 16 | 
6 files changed, 327 insertions, 69 deletions
| diff --git a/tests/group/helper_get_name_string_test.php b/tests/group/helper_get_name_string_test.php new file mode 100644 index 0000000000..c626328dcc --- /dev/null +++ b/tests/group/helper_get_name_string_test.php @@ -0,0 +1,115 @@ +<?php +/** + * + * This file is part of the phpBB Forum Software package. + * + * @copyright (c) phpBB Limited <https://www.phpbb.com> + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +require_once dirname(__FILE__) . '/helper_test_case.php'; + +class phpbb_group_helper_get_name_string_test extends phpbb_group_helper_test_case +{ + +	public function get_name_string_profile_data() +	{ +		global $phpbb_root_path, $phpEx; + +		return array( +			array(0, 'Non existing group', '', false, ''), +			array(2, 'Administrators', 'AA0000', false, "{$phpbb_root_path}memberlist.$phpEx?mode=group&g=2"), +			array(42, 'Example Group', '', 'http://www.example.org/group.php?mode=show', 'http://www.example.org/group.php?mode=show&g=42'), +		); +	} + +	/** +	* @dataProvider get_name_string_profile_data +	*/ +	public function test_get_name_string_profile($group_id, $group_name, $group_colour, $custom_profile_url, $expected) +	{ +		$this->assertEquals($expected, $this->group_helper->get_name_string('profile', $group_id, $group_name, $group_colour, $custom_profile_url)); +	} + +	public function get_name_string_group_name_data() +	{ +		return array( +			// Should be fine +			array(0, 'BOTS', 'AA0000', false, 'Bots'), +			array(1, 'new_group', '', false, 'Some new group'), +			array(2, 'group_with_ümlauts', '', 'http://www.example.org/group.php?mode=show', 'Should work'), + +			// Should fail and thus return the same +			array(3, 'not_uppercase', 'FFFFFF', false, 'not_uppercase'), +			array(4, 'Awesome group', '', false, 'Awesome group'), +		); +	} + +	/** +	 * @dataProvider get_name_string_group_name_data +	 */ +	public function test_get_name_string_group_name($group_id, $group_name, $group_colour, $custom_profile_url, $expected) +	{ +		$this->assertEquals($expected, $this->group_helper->get_name_string('group_name', $group_id, $group_name, $group_colour, $custom_profile_url)); +	} + +	public function get_name_string_colour_data() +	{ +		return array( +			array(0, '', '', false, ''), +			array(0, '', 'F0F0F0', false, '#F0F0F0'), +			array(1, 'Guests', '000000', false, '#000000'), +			array(2, 'Administrators', '', false, ''), +		); +	} + +	/** +	 * @dataProvider get_name_string_colour_data +	 */ +	public function test_get_name_string_colour($group_id, $group_name, $group_colour, $custom_profile_url, $expected) +	{ +		$this->assertEquals($expected, $this->group_helper->get_name_string('colour', $group_id, $group_name, $group_colour, $custom_profile_url)); +	} + +	public function get_name_string_full_data() +	{ +		global $phpbb_root_path, $phpEx; + +		return array( +			array(0, 'BOTS', '000000', false, '<span class="username-coloured" style="color: #000000;">Bots</span>'), +			array(1, 'BOTS', '111111', false, '<span class="username-coloured" style="color: #111111;">Bots</span>'), +			array(7, 'new_group', 'FFA500', false, '<a class="username-coloured" href="' . $phpbb_root_path . 'memberlist.' . $phpEx . '?mode=group&g=7" style="color: #FFA500;">Some new group</a>'), +			array(14, 'Awesome group', '', 'http://www.example.org/group.php?mode=show', '<a class="username" href="http://www.example.org/group.php?mode=show&g=14">Awesome group</a>'), +		); +	} + +	/** +	 * @dataProvider get_name_string_full_data +	 */ +	public function test_get_name_string_full($group_id, $group_name, $group_colour, $custom_profile_url, $expected) +	{ +		$this->assertEquals($expected, $this->group_helper->get_name_string('full', $group_id, $group_name, $group_colour, $custom_profile_url)); +	} + +	public function get_name_string_no_profile_data() +	{ +		return array( +			array(0, 'BOTS', '000000', false, '<span class="username-coloured" style="color: #000000;">Bots</span>'), +			array(1, 'new_group', '', false, '<span class="username">Some new group</span>'), +			array(2, 'not_uppercase', 'FF0000', false, '<span class="username-coloured" style="color: #FF0000;">not_uppercase</span>'), +			array(5, 'Awesome group', '', 'http://www.example.org/group.php?mode=show', '<span class="username">Awesome group</span>'), +		); +	} + +	/** +	 * @dataProvider get_name_string_no_profile_data +	 */ +	public function test_get_name_string_no_profile($group_id, $group_name, $group_colour, $custom_profile_url, $expected) +	{ +		$this->assertEquals($expected, $this->group_helper->get_name_string('no_profile', $group_id, $group_name, $group_colour, $custom_profile_url)); +	} +} diff --git a/tests/group/helper_get_name_test.php b/tests/group/helper_get_name_test.php new file mode 100644 index 0000000000..b39b2cbedd --- /dev/null +++ b/tests/group/helper_get_name_test.php @@ -0,0 +1,31 @@ +<?php +/** + * + * This file is part of the phpBB Forum Software package. + * + * @copyright (c) phpBB Limited <https://www.phpbb.com> + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +require_once dirname(__FILE__) . '/helper_test_case.php'; + +class phpbb_group_helper_get_name_test extends phpbb_group_helper_test_case +{ +	public function test_get_name() +	{ +		// They should be totally fine +		$this->assertEquals('Bots', $this->group_helper->get_name('Bots')); +		$this->assertEquals('Some new group', $this->group_helper->get_name('new_group')); +		$this->assertEquals('Should work', $this->group_helper->get_name('group_with_ümlauts')); + +		// This should fail (obviously) +		$this->assertNotEquals('The key does not contain uppercase letters', $this->group_helper->get_name('not_uppercase')); + +		// The key doesn't exist so just return group name... +		$this->assertEquals('Awesome group', $this->group_helper->get_name('Awesome group')); +	} +} diff --git a/tests/group/helper_get_rank_test.php b/tests/group/helper_get_rank_test.php new file mode 100644 index 0000000000..5efd8ad95e --- /dev/null +++ b/tests/group/helper_get_rank_test.php @@ -0,0 +1,43 @@ +<?php +/** + * + * This file is part of the phpBB Forum Software package. + * + * @copyright (c) phpBB Limited <https://www.phpbb.com> + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +require_once dirname(__FILE__) . '/helper_test_case.php'; + +class phpbb_group_helper_get_rank_test extends phpbb_group_helper_test_case +{ +	public function get_rank_data() +	{ +		global $phpbb_root_path; + +		return array( +			array( +				array('group_id' => 0, 'group_rank' => 1), +				array( +					'title' => 'Site admin', +					'img' => '<img src="' . $phpbb_root_path . 'images/ranks/siteadmin.png' . '" alt="Site admin" title="Site admin" />', +					'img_src' => $phpbb_root_path . 'images/ranks/siteadmin.png', +				) +			), +			array(array('group_id' => 1, 'group_rank' => 0), array('title' => null, 'img' => null, 'img_src' => null)), +			array(array('group_id' => 2, 'group_rank' => 2), array('title' => 'Test member', 'img' => '', 'img_src' => '')), +		); +	} + +	/** +	 * @dataProvider get_rank_data +	 */ +	public function test_get_rank($group_data, $expected) +	{ +		$this->assertEquals($expected, $this->group_helper->get_rank($group_data)); +	} +} diff --git a/tests/group/helper_test.php b/tests/group/helper_test.php deleted file mode 100644 index 2377a6f47c..0000000000 --- a/tests/group/helper_test.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php -/** - * - * This file is part of the phpBB Forum Software package. - * - * @copyright (c) phpBB Limited <https://www.phpbb.com> - * @license GNU General Public License, version 2 (GPL-2.0) - * - * For full copyright and license information, please see - * the docs/CREDITS.txt file. - * - */ - -class phpbb_group_helper_test extends phpbb_test_case -{ -	/** @var  \phpbb\group\helper */ -	protected $group_helper; - -	public function setUp() -	{ -		global $phpbb_root_path, $phpEx; - -		// Set up language service -		$lang = new \phpbb\language\language( -			new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx) -		); - -		// Set up language data for testing -		$reflection_class = new ReflectionClass('\phpbb\language\language'); - -		// Set default language files loaded flag to true -		$loaded_flag = $reflection_class->getProperty('common_language_files_loaded'); -		$loaded_flag->setAccessible(true); -		$loaded_flag->setValue($lang, true); - -		// Set up test language data -		$lang_array = $reflection_class->getProperty('lang'); -		$lang_array->setAccessible(true); -		$lang_array->setValue($lang, $this->get_test_language_data_set()); - -		// Set up group helper -		$this->group_helper = new \phpbb\group\helper($lang); -	} - -	public function test_get_name() -	{ -		// They should be totally fine -		$this->assertEquals('Bots', $this->group_helper->get_name('Bots')); -		$this->assertEquals('Some new group', $this->group_helper->get_name('new_group')); -		$this->assertEquals('Should work', $this->group_helper->get_name('group_with_ümlauts')); - -		// This should fail (obviously) -		$this->assertNotEquals('They key does not contain uppercase letters', $this->group_helper->get_name('not_uppercase')); - -		// The key doesn't exist so just return group name... -		$this->assertEquals('Awesome group', $this->group_helper->get_name('Awesome group')); -	} - -	protected function get_test_language_data_set() -	{ -		return array( -			'G_BOTS'					=> 'Bots', -			'G_NEW_GROUP'				=> 'Some new group', -			'G_not_uppercase'			=> 'The key does not contain uppercase letters', -			'G_GROUP_WITH_ÜMLAUTS'		=> 'Should work', -		); -	} -} diff --git a/tests/group/helper_test_case.php b/tests/group/helper_test_case.php new file mode 100644 index 0000000000..e298770331 --- /dev/null +++ b/tests/group/helper_test_case.php @@ -0,0 +1,123 @@ +<?php +/** + * + * This file is part of the phpBB Forum Software package. + * + * @copyright (c) phpBB Limited <https://www.phpbb.com> + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +class phpbb_group_helper_test_case extends phpbb_test_case +{ +	/** @var  \phpbb\group\helper */ +	protected $group_helper; + +	protected function config_defaults() +	{ +		$defaults = array( +			'ranks_path' => 'images/ranks' +		); +		return $defaults; +	} + +	protected function get_test_language_data_set() +	{ +		return array( +			'G_BOTS'					=> 'Bots', +			'G_NEW_GROUP'				=> 'Some new group', +			'G_not_uppercase'			=> 'The key does not contain uppercase letters', +			'G_GROUP_WITH_ÜMLAUTS'		=> 'Should work', +		); +	} + +	protected function get_test_rank_data_set() +	{ +		return array( +			'special' => array( +				1 => array( +					'rank_id'		=> 1, +					'rank_title'	=> 'Site admin', +					'rank_special'	=> 1, +					'rank_image'	=> 'siteadmin.png', +				), +				2 => array( +					'rank_id'		=> 2, +					'rank_title'	=> 'Test member', +					'rank_special'	=> 1, +					'rank_image'	=> '', +				) +			) +		); +	} + +	protected function setup_engine(array $new_config = array()) +	{ +		global $phpbb_dispatcher, $phpbb_root_path, $phpEx; + +		// Set up authentication data for testing +		$auth = $this->getMock('\phpbb\auth\auth'); +		$auth->expects($this->any()) +			->method('acl_get') +			->with($this->stringContains('_'), $this->anything()) +			->will($this->returnValueMap(array( +				array('u_viewprofile', true), +			))); + +		// Set up cache service +		$cache_service = $this->getMockBuilder('\phpbb\cache\service')->disableOriginalConstructor()->getMock(); +		$cache_service->expects($this->any()) +			->method('obtain_ranks') +			->will($this->returnValue($this->get_test_rank_data_set())); + +		// Set up configuration +		$defaults = $this->config_defaults(); +		$config = new \phpbb\config\config(array_merge($defaults, $new_config)); + +		// Set up language service +		$lang = new \phpbb\language\language( +			new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx) +		); + +		// Set up language data for testing +		$reflection_class = new ReflectionClass('\phpbb\language\language'); + +		// Set default language files loaded flag to true +		$loaded_flag = $reflection_class->getProperty('common_language_files_loaded'); +		$loaded_flag->setAccessible(true); +		$loaded_flag->setValue($lang, true); + +		// Set up test language data +		$lang_array = $reflection_class->getProperty('lang'); +		$lang_array->setAccessible(true); +		$lang_array->setValue($lang, $this->get_test_language_data_set()); + +		// Set up event dispatcher +		$phpbb_dispatcher = new phpbb_mock_event_dispatcher(); + +		// Set up path helper +		$path_helper = $this->getMockBuilder('\phpbb\path_helper') +			->disableOriginalConstructor() +			->setMethods(array()) +			->getMock(); +		$path_helper->method('get_phpbb_root_path') +			->willReturn($phpbb_root_path); +		$path_helper->method('get_php_ext') +			->willReturn($phpEx); +		$path_helper->method('update_web_root_path') +			->will($this->returnArgument(0)); + +		$user = new \phpbb\user($lang, '\phpbb\datetime'); +		$user->data['user_id'] = ANONYMOUS; + +		$this->group_helper = new \phpbb\group\helper($auth, $cache_service, $config, $lang, $phpbb_dispatcher, $path_helper, $user); +	} + +	public function setUp() +	{ +		$this->setup_engine(); +	} +} diff --git a/tests/notification/group_request_test.php b/tests/notification/group_request_test.php index 92e758a336..e849c66fa5 100644 --- a/tests/notification/group_request_test.php +++ b/tests/notification/group_request_test.php @@ -49,9 +49,23 @@ class phpbb_notification_group_request_test extends phpbb_tests_notification_bas  			$this->cache->get_driver()  		));  		$this->container->set('group_helper', new \phpbb\group\helper( +			$this->getMock('\phpbb\auth\auth'), +			$this->cache, +			$this->config,  			new \phpbb\language\language(  				new phpbb\language\language_file_loader($phpbb_root_path, $phpEx) -			) +			), +			new phpbb_mock_event_dispatcher(), +			new \phpbb\path_helper( +				new \phpbb\symfony_request( +					new phpbb_mock_request() +				), +				new \phpbb\filesystem\filesystem(), +				$this->getMock('\phpbb\request\request'), +				$phpbb_root_path, +				$phpEx +			), +			$this->user  		));  		$phpbb_dispatcher = new phpbb_mock_event_dispatcher;  		$phpbb_log = new \phpbb\log\dummy(); | 
