diff options
Diffstat (limited to 'tests')
23 files changed, 462 insertions, 36 deletions
diff --git a/tests/auth/provider_apache_test.php b/tests/auth/provider_apache_test.php index 23d6910843..4b12abd62a 100644 --- a/tests/auth/provider_apache_test.php +++ b/tests/auth/provider_apache_test.php @@ -161,7 +161,7 @@ class phpbb_auth_provider_apache_test extends phpbb_database_test_case  			'user_inactive_time' => '0',  			'user_posts' => '0',  			'user_lang' => '', -			'user_timezone' => 'UTC', +			'user_timezone' => '',  			'user_dateformat' => 'd M Y H:i',  			'user_style' => '0',  			'user_rank' => '0', diff --git a/tests/extension/ext/barfoo/composer.json b/tests/extension/ext/barfoo/composer.json index 35d5d2a956..d88fd413c9 100644 --- a/tests/extension/ext/barfoo/composer.json +++ b/tests/extension/ext/barfoo/composer.json @@ -4,7 +4,7 @@  	"description": "An example/sample extension to be used for testing purposes in phpBB Development.",  	"version": "1.0.0",  	"time": "2012-02-15 01:01:01", -	"licence": "GNU GPL v2", +	"license": "GNU GPL v2",  	"authors": [{  			"name": "John Smith",  			"username": "JohnSmith27", diff --git a/tests/extension/ext/vendor/moo/composer.json b/tests/extension/ext/vendor/moo/composer.json index 901cb7f17a..b8fc544c01 100644 --- a/tests/extension/ext/vendor/moo/composer.json +++ b/tests/extension/ext/vendor/moo/composer.json @@ -4,7 +4,7 @@  	"description": "An example/sample extension to be used for testing purposes in phpBB Development.",  	"version": "1.0.0",  	"time": "2012-02-15 01:01:01", -	"licence": "GNU GPL v2", +	"license": "GNU GPL v2",  	"authors": [{  			"name": "John Smith",  			"username": "JohnSmith27", diff --git a/tests/extension/ext/vendor2/bar/composer.json b/tests/extension/ext/vendor2/bar/composer.json index 5d60ec031e..215e7d59db 100644 --- a/tests/extension/ext/vendor2/bar/composer.json +++ b/tests/extension/ext/vendor2/bar/composer.json @@ -4,7 +4,7 @@  	"description": "An example/sample extension to be used for testing purposes in phpBB Development.",  	"version": "1.0.0",  	"time": "2012-02-15 01:01:01", -	"licence": "GPL-2.0", +	"license": "GPL-2.0",  	"authors": [{  			"name": "John Smith",  			"email": "email@phpbb.com", diff --git a/tests/extension/ext/vendor2/foo/composer.json b/tests/extension/ext/vendor2/foo/composer.json index 8821d9d50e..7b2a80f5d3 100644 --- a/tests/extension/ext/vendor2/foo/composer.json +++ b/tests/extension/ext/vendor2/foo/composer.json @@ -4,7 +4,7 @@  	"description": "An example/sample extension to be used for testing purposes in phpBB Development.",  	"version": "1.0.0",  	"time": "2012-02-15 01:01:01", -	"licence": "GPL-2.0", +	"license": "GPL-2.0",  	"authors": [{  			"name": "John Smith",  			"email": "email@phpbb.com", diff --git a/tests/extension/metadata_manager_test.php b/tests/extension/metadata_manager_test.php index a3c4cc89e9..a3584be67b 100644 --- a/tests/extension/metadata_manager_test.php +++ b/tests/extension/metadata_manager_test.php @@ -148,13 +148,13 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case  		try  		{ -			$manager->validate('licence'); +			$manager->validate('license');  			$this->fail('Exception not triggered');  		}  		catch(\phpbb\extension\exception $e)  		{ -			$this->assertEquals((string) $e, 'Required meta field \'licence\' has not been set.'); +			$this->assertEquals((string) $e, 'Required meta field \'license\' has not been set.');  		}  		try @@ -208,7 +208,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case  		$manager->set_metadata(array(  			'name'		=> 'asdf',  			'type'		=> 'asdf', -			'licence'	=> '', +			'license'	=> '',  			'version'	=> '',  		)); @@ -236,13 +236,13 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case  		try  		{ -			$manager->validate('licence'); +			$manager->validate('license');  			$this->fail('Exception not triggered');  		}  		catch(\phpbb\extension\exception $e)  		{ -			$this->assertEquals((string) $e, 'Meta field \'licence\' is invalid.'); +			$this->assertEquals((string) $e, 'Meta field \'license\' is invalid.');  		}  		try @@ -267,7 +267,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case  		$manager->set_metadata(array(  			'name'		=> 'test/foo',  			'type'		=> 'phpbb-extension', -			'licence'	=> 'GPL v2', +			'license'	=> 'GPL v2',  			'version'	=> '1.0.0',  		)); diff --git a/tests/extension/modules_test.php b/tests/extension/modules_test.php index c0a136e173..e396b7b73e 100644 --- a/tests/extension/modules_test.php +++ b/tests/extension/modules_test.php @@ -209,7 +209,7 @@ class phpbb_extension_modules_test extends phpbb_test_case  	*/  	public function test_modules_auth($module_auth, $expected)  	{ -		global $phpbb_extension_manager; +		global $phpbb_extension_manager, $phpbb_dispatcher;  		$phpbb_extension_manager = $this->extension_manager = new phpbb_mock_extension_manager(  			dirname(__FILE__) . '/', @@ -227,6 +227,8 @@ class phpbb_extension_modules_test extends phpbb_test_case  			)  		); +		$phpbb_dispatcher = new phpbb_mock_event_dispatcher(); +  		$this->assertEquals($expected, p_master::module_auth($module_auth, 0));  	}  } diff --git a/tests/functional/auth_test.php b/tests/functional/auth_test.php index cfd85571b7..d3fed18094 100644 --- a/tests/functional/auth_test.php +++ b/tests/functional/auth_test.php @@ -18,7 +18,7 @@ class phpbb_functional_auth_test extends phpbb_functional_test_case  		// check for logout link  		$crawler = self::request('GET', 'index.php'); -		$this->assertContains($this->lang('LOGOUT_USER', 'admin'), $crawler->filter('.navbar')->text()); +		$this->assertContains($this->lang('LOGOUT', 'admin'), $crawler->filter('.navbar')->text());  	}  	public function test_login_other() @@ -26,7 +26,7 @@ class phpbb_functional_auth_test extends phpbb_functional_test_case  		$this->create_user('anothertestuser');  		$this->login('anothertestuser');  		$crawler = self::request('GET', 'index.php'); -		$this->assertContains('anothertestuser', $crawler->filter('.icon-logout')->text()); +		$this->assertContains('anothertestuser', $crawler->filter('#username_logged_in')->text());  	}  	/** diff --git a/tests/functional/extension_acp_test.php b/tests/functional/extension_acp_test.php index 53f62c4f19..5f02158e20 100644 --- a/tests/functional/extension_acp_test.php +++ b/tests/functional/extension_acp_test.php @@ -85,14 +85,14 @@ class phpbb_functional_extension_acp_test extends phpbb_functional_test_case  		$this->assertContains('phpBB Foo Extension', $crawler->filter('.ext_enabled')->eq(0)->text());  		$this->assertContainsLang('EXTENSION_DISABLE', $crawler->filter('.ext_enabled')->eq(0)->text()); -		$this->assertContains('phpBB Moo Extension', $crawler->filter('.ext_disabled')->eq(1)->text()); -		$this->assertContainsLang('DETAILS', $crawler->filter('.ext_disabled')->eq(1)->text()); -		$this->assertContainsLang('EXTENSION_ENABLE', $crawler->filter('.ext_disabled')->eq(1)->text()); -		$this->assertContainsLang('EXTENSION_DELETE_DATA', $crawler->filter('.ext_disabled')->eq(1)->text()); +		$this->assertContains('phpBB Moo Extension', $crawler->filter('.ext_disabled')->eq(2)->text()); +		$this->assertContainsLang('DETAILS', $crawler->filter('.ext_disabled')->eq(2)->text()); +		$this->assertContainsLang('EXTENSION_ENABLE', $crawler->filter('.ext_disabled')->eq(2)->text()); +		$this->assertContainsLang('EXTENSION_DELETE_DATA', $crawler->filter('.ext_disabled')->eq(2)->text());  		$this->assertContains('The “vendor/test2” extension is not valid.', $crawler->filter('.ext_disabled')->eq(0)->text()); -		$this->assertContains('The “vendor/test3” extension is not valid.', $crawler->filter('.ext_disabled')->eq(2)->text()); +		$this->assertContains('The “vendor/test3” extension is not valid.', $crawler->filter('.ext_disabled')->eq(1)->text());  		$this->assertContains('phpBB Bar Extension', $crawler->filter('.ext_disabled')->eq(3)->text());  		$this->assertContainsLang('DETAILS', $crawler->filter('.ext_disabled')->eq(3)->text()); @@ -116,7 +116,7 @@ class phpbb_functional_extension_acp_test extends phpbb_functional_test_case  			'DESCRIPTION'		=> 'An example/sample extension to be used for testing purposes in phpBB Development.',  			'VERSION'	  		=> '1.0.0',  			'TIME'				=> '2012-02-15 01:01:01', -			'LICENCE'			=> 'GPL-2.0', +			'LICENSE'			=> 'GPL-2.0',  			'PHPBB_VERSION'		=> '3.1.*@dev',  			'PHP_VERSION'		=> '>=5.3',  			'AUTHOR_NAME'		=> 'John Smith', diff --git a/tests/functional/fixtures/ext/foo/bar/composer.json b/tests/functional/fixtures/ext/foo/bar/composer.json index e3e5fc21cd..2f91426d2a 100644 --- a/tests/functional/fixtures/ext/foo/bar/composer.json +++ b/tests/functional/fixtures/ext/foo/bar/composer.json @@ -5,7 +5,7 @@  	"homepage": "",  	"version": "1.0.0",  	"time": "2013-03-21 01:01:01", -	"licence": "GPL-2.0", +	"license": "GPL-2.0",  	"authors": [{  		"name": "Joas Schilling",  		"email": "nickvergessen@phpbb.com", diff --git a/tests/functional/memberlist_test.php b/tests/functional/memberlist_test.php index 738ec4f9dd..b7f7a1823d 100644 --- a/tests/functional/memberlist_test.php +++ b/tests/functional/memberlist_test.php @@ -39,7 +39,7 @@ class phpbb_functional_memberlist_test extends phpbb_functional_test_case  	protected function get_memberlist_leaders_table_crawler()  	{ -		$crawler = self::request('GET', 'memberlist.php?mode=leaders&sid=' . $this->sid); +		$crawler = self::request('GET', 'memberlist.php?mode=team&sid=' . $this->sid);  		return $crawler->filter('.forumbg-table');  	} diff --git a/tests/functional/notification_test.php b/tests/functional/notification_test.php index dd1b8ec981..9ae37842fe 100644 --- a/tests/functional/notification_test.php +++ b/tests/functional/notification_test.php @@ -60,7 +60,7 @@ class phpbb_functional_notification_test extends phpbb_functional_test_case  		$this->add_user_group('NEWLY_REGISTERED', array('notificationtestuser'));  		$this->login('notificationtestuser');  		$crawler = self::request('GET', 'index.php'); -		$this->assertContains('notificationtestuser', $crawler->filter('.icon-logout')->text()); +		$this->assertContains('notificationtestuser', $crawler->filter('#username_logged_in')->text());  		// Post a new post that needs approval  		$this->create_post(2, 1, 'Re: Welcome to phpBB3', 'This is a test [b]post[/b] posted by notificationtestuser.', array(), 'POST_STORED_MOD'); diff --git a/tests/functions/generate_string_list.php b/tests/functions/generate_string_list.php new file mode 100644 index 0000000000..cfc150c1f4 --- /dev/null +++ b/tests/functions/generate_string_list.php @@ -0,0 +1,60 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2014 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +require_once dirname(__FILE__) . '/../../phpBB/includes/functions_content.php'; +require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php'; + +class phpbb_generate_string_list_test extends phpbb_test_case +{ +	public $user; + +	public function setUp() +	{ +		parent::setUp(); + +		$this->user = new \phpbb\user(); +		$this->user->data = array('user_lang' => 'en'); +		$this->user->add_lang('common'); +	} + +	public function generate_string_list_data() +	{ +		return array( +			array( +				array(), +				'', +			), +			array( +				array('A'), +				'A',	 +			), +			array( +				array(2 => 'A', 3 => 'B'), +				'A and B', +			), +			array( +				array('A' => 'A', 'B' => 'B', 'C' => 'C'), +				'A, B, and C', +			), +			array( +				array('A', 'B', 'C', 'D'), +				'A, B, C, and D', +			) +		); +	} + +	/** +	* @dataProvider generate_string_list_data +	*/ +	public function test_generate_string_list($items, $expected_result) +	{ +		$result = phpbb_generate_string_list($items, $this->user); +		$this->assertEquals($expected_result, $result); +	} +} diff --git a/tests/functions_content/get_username_string_test.php b/tests/functions_content/get_username_string_test.php new file mode 100644 index 0000000000..1f23f19056 --- /dev/null +++ b/tests/functions_content/get_username_string_test.php @@ -0,0 +1,126 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2014 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php'; +require_once dirname(__FILE__) . '/../../phpBB/includes/functions_content.php'; + +class phpbb_functions_content_get_username_string_test extends phpbb_test_case +{ +	public function setUp() +	{ +		parent::setUp(); + +		global $auth, $phpbb_dispatcher, $user; +		$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), +			))); +		$phpbb_dispatcher = new phpbb_mock_event_dispatcher; +		$user->data['user_id'] = ANONYMOUS; +		$user->lang['GUEST'] = 'Guest'; +	} + +	public function get_username_string_profile_data() +	{ +		global $phpbb_root_path, $phpEx; + +		return array( +			array(ANONYMOUS, 'Anonymous', '', false, false, ''), +			array(2, 'Administrator', 'FF0000', false, false, "{$phpbb_root_path}memberlist.$phpEx?mode=viewprofile&u=2"), +			array(42, 'User42', '', false, 'http://www.example.org/user.php?mode=show', 'http://www.example.org/user.php?mode=show&u=42'), +		); +	} + +	/** +	* @dataProvider get_username_string_profile_data +	*/ +	public function test_get_username_string_profile($user_id, $username, $user_colour, $guest_username, $custom_profile_url, $expected) +	{ +		$this->assertEquals($expected, get_username_string('profile', $user_id, $username, $user_colour, $guest_username, $custom_profile_url)); +	} + +	public function get_username_string_username_data() +	{ +		return array( +			array(ANONYMOUS, '', '', false, false, 'Guest'), +			array(ANONYMOUS, '', '', 'CustomName', false, 'CustomName'), +			array(2, 'User2', '', false, false, 'User2'), +			array(5, 'User5', '', 'Anonymous', false, 'User5'), +			array(128, 'User128', '', false, false, 'User128'), +		); +	} + +	/** +	* @dataProvider get_username_string_username_data +	*/ +	public function test_get_username_string_username($user_id, $username, $user_colour, $guest_username, $custom_profile_url, $expected) +	{ +		$this->assertEquals($expected, get_username_string('username', $user_id, $username, $user_colour, $guest_username, $custom_profile_url)); +	} + +	public function get_username_string_colour_data() +	{ +		return array( +			array(0, '', '', false, false, ''), +			array(0, '', 'F0F0F0', false, false, '#F0F0F0'), +			array(ANONYMOUS, 'Anonymous', '000000', false, false, '#000000'), +			array(2, 'Administrator', '', false, false, ''), +		); +	} + +	/** +	* @dataProvider get_username_string_colour_data +	*/ +	public function test_get_username_string_colour($user_id, $username, $user_colour, $guest_username, $custom_profile_url, $expected) +	{ +		$this->assertEquals($expected, get_username_string('colour', $user_id, $username, $user_colour, $guest_username, $custom_profile_url)); +	} + +	public function get_username_string_full_data() +	{ +		global $phpbb_root_path, $phpEx; + +		return array( +			array(0, '', '', false, false, 'Guest'), +			array(ANONYMOUS, 'Anonymous', '', false, false, 'Anonymous'), +			array(2, 'Administrator', 'FF0000', false, false, '<a href="' . $phpbb_root_path . 'memberlist.' . $phpEx . '?mode=viewprofile&u=2" style="color: #FF0000;" class="username-coloured">Administrator</a>'), +			array(5, 'User5', '', false, 'http://www.example.org/user.php?mode=show', '<a href="http://www.example.org/user.php?mode=show&u=5">User5</a>'), +			array(8, 'Eight', '', false, false, '<a href="' . $phpbb_root_path . 'memberlist.php?mode=viewprofile&u=8">Eight</a>'), +		); +	} + +	/** +	* @dataProvider get_username_string_full_data +	*/ +	public function test_get_username_string_full($user_id, $username, $user_colour, $guest_username, $custom_profile_url, $expected) +	{ +		$this->assertEquals($expected, get_username_string('full', $user_id, $username, $user_colour, $guest_username, $custom_profile_url)); +	} + +	public function get_username_string_no_profile_data() +	{ +		return array( +			array(ANONYMOUS, 'Anonymous', '', false, false, 'Anonymous'), +			array(ANONYMOUS, 'Anonymous', '', '', false, 'Guest'), +			array(2, 'Administrator', 'FF0000', false, false, '<span style="color: #FF0000;" class="username-coloured">Administrator</span>'), +			array(8, 'Eight', '', false, false, 'Eight'), +		); +	} + +	/** +	* @dataProvider get_username_string_no_profile_data +	*/ +	public function test_get_username_string_no_profile($user_id, $username, $user_colour, $guest_username, $custom_profile_url, $expected) +	{ +		$this->assertEquals($expected, get_username_string('no_profile', $user_id, $username, $user_colour, $guest_username, $custom_profile_url)); +	} +} diff --git a/tests/mock/notification_type_post.php b/tests/mock/notification_type_post.php new file mode 100644 index 0000000000..80f2afbae0 --- /dev/null +++ b/tests/mock/notification_type_post.php @@ -0,0 +1,36 @@ +<?php +/** +* +* @package notifications +* @copyright (c) 2014 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +/** +* @ignore +*/ +if (!defined('IN_PHPBB')) +{ +	exit; +} + +class phpbb_mock_notification_type_post extends \phpbb\notification\type\post +{ +	public function __construct($user_loader, $db, $cache, $user, $auth, $config, $phpbb_root_path, $php_ext, $notification_types_table, $notifications_table, $user_notifications_table) +	{ +		$this->user_loader = $user_loader; +		$this->db = $db; +		$this->cache = $cache; +		$this->user = $user; +		$this->auth = $auth; +		$this->config = $config; + +		$this->phpbb_root_path = $phpbb_root_path; +		$this->php_ext = $php_ext; + +		$this->notification_types_table = $notification_types_table; +		$this->notifications_table = $notifications_table; +		$this->user_notifications_table = $user_notifications_table;	 +	} +} diff --git a/tests/notification/fixtures/user_list_trim.xml b/tests/notification/fixtures/user_list_trim.xml new file mode 100644 index 0000000000..4f708714da --- /dev/null +++ b/tests/notification/fixtures/user_list_trim.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<dataset> +	<table name="phpbb_users"> +		<column>user_id</column> +		<column>username</column> +		<column>username_clean</column> +		<column>user_colour</column> +		<column>user_permissions</column> +		<column>user_sig</column> +		<row> +			<value>2</value> +			<value>A</value> +			<value>a</value> +			<value></value> +			<value></value> +			<value></value> +		</row> +		<row> +			<value>3</value> +			<value>B</value> +			<value>b</value> +			<value></value> +			<value></value> +			<value></value> +		</row> +		<row> +			<value>4</value> +			<value>C</value> +			<value>c</value> +			<value></value> +			<value></value> +			<value></value> +		</row> +		<row> +			<value>5</value> +			<value>D</value> +			<value>d</value> +			<value></value> +			<value></value> +			<value></value> +		</row> +		<row> +			<value>6</value> +			<value>E</value> +			<value>e</value> +			<value></value> +			<value></value> +			<value></value> +		</row> +	</table> +</dataset> diff --git a/tests/notification/submit_post_base.php b/tests/notification/submit_post_base.php index fb8e2ac807..10d676c687 100644 --- a/tests/notification/submit_post_base.php +++ b/tests/notification/submit_post_base.php @@ -133,7 +133,7 @@ abstract class phpbb_notification_submit_post_base extends phpbb_database_test_c  			FROM ' . NOTIFICATIONS_TABLE . ' n, ' . NOTIFICATION_TYPES_TABLE . " nt  			WHERE nt.notification_type_name = '" . $this->item_type . "'  				AND n.notification_type_id = nt.notification_type_id -			ORDER BY user_id, item_id ASC"; +			ORDER BY user_id ASC, item_id ASC";  		$result = $this->db->sql_query($sql);  		$this->assertEquals($expected_before, $this->db->sql_fetchrowset($result));  		$this->db->sql_freeresult($result); @@ -142,11 +142,6 @@ abstract class phpbb_notification_submit_post_base extends phpbb_database_test_c  		$post_data = array_merge($this->post_data, $additional_post_data);  		submit_post('reply', '', 'poster-name', POST_NORMAL, $poll_data, $post_data, false, false); -		$sql = 'SELECT user_id, item_id, item_parent_id -			FROM ' . NOTIFICATIONS_TABLE . ' n, ' . NOTIFICATION_TYPES_TABLE . " nt -			WHERE nt.notification_type_name = '" . $this->item_type . "' -				AND n.notification_type_id = nt.notification_type_id -			ORDER BY user_id ASC, item_id ASC";  		$result = $this->db->sql_query($sql);  		$this->assertEquals($expected_after, $this->db->sql_fetchrowset($result));  		$this->db->sql_freeresult($result); diff --git a/tests/notification/submit_post_type_bookmark_test.php b/tests/notification/submit_post_type_bookmark_test.php index 861017ff5f..4e4a3f6c9a 100644 --- a/tests/notification/submit_post_type_bookmark_test.php +++ b/tests/notification/submit_post_type_bookmark_test.php @@ -27,7 +27,7 @@ class phpbb_notification_submit_post_type_bookmark_test extends phpbb_notificati  				$this->greaterThan(0))  			->will($this->returnValueMap(array(  				array( -					array('3', '4', '5', '6', '7'), +					array(3, 4, 5, 6, 7),  					'f_read',  					1,  					array( diff --git a/tests/notification/submit_post_type_post_test.php b/tests/notification/submit_post_type_post_test.php index 473247a764..c2eb419522 100644 --- a/tests/notification/submit_post_type_post_test.php +++ b/tests/notification/submit_post_type_post_test.php @@ -27,7 +27,7 @@ class phpbb_notification_submit_post_type_post_test extends phpbb_notification_s  				$this->greaterThan(0))  			->will($this->returnValueMap(array(  				array( -					array('3', '4', '5', '6', '7', '8'), +					array(3, 4, 5, 6, 7, 8),  					'f_read',  					1,  					array( diff --git a/tests/notification/submit_post_type_quote_test.php b/tests/notification/submit_post_type_quote_test.php index 2b66d9c6a1..a849cb7b1b 100644 --- a/tests/notification/submit_post_type_quote_test.php +++ b/tests/notification/submit_post_type_quote_test.php @@ -27,7 +27,7 @@ class phpbb_notification_submit_post_type_quote_test extends phpbb_notification_  				$this->greaterThan(0))  			->will($this->returnValueMap(array(  				array( -					array('3', '4', '5', '6', '7'), +					array(3, 4, 5, 6, 7),  					'f_read',  					1,  					array( diff --git a/tests/notification/user_list_trim_test.php b/tests/notification/user_list_trim_test.php new file mode 100644 index 0000000000..a8422f80b5 --- /dev/null +++ b/tests/notification/user_list_trim_test.php @@ -0,0 +1,139 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2014 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +require_once dirname(__FILE__) . '/../../phpBB/includes/functions_content.php'; +require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php'; + +class phpbb_notification_user_list_trim_test extends phpbb_database_test_case +{ +	protected $notification; + +	public function getDataSet() +	{ +		return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/user_list_trim.xml'); +	} + +	public function setUp() +	{ +		global $phpbb_root_path, $phpEx, $phpbb_dispatcher, $user, $cache, $auth; + +		parent::setUp(); + +		$phpbb_dispatcher = new phpbb_mock_event_dispatcher(); +		$db = $this->new_dbal(); + +		$config = new \phpbb\config\config(array()); +		set_config(null, null, null, $config); +		set_config_count(null, null, null, $config); + +		$cache = new \phpbb\cache\service( +			new \phpbb\cache\driver\null(), +			$config, +			$db, +			$phpbb_root_path, +			$phpEx +		); + +		$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', 1, false), +			))); + +		$user = new \phpbb\user(); +		$user->data = array('user_lang' => 'en'); +		$user->add_lang('common'); + +		$user_loader = new phpbb\user_loader($db, $phpbb_root_path, $phpEx, USERS_TABLE); +		$user_loader->load_users(array(2, 3, 4, 5, 6)); + +		$this->notification = new phpbb_mock_notification_type_post( +			$user_loader, null, null, $user, null, null, $phpbb_root_path, $phpEx, null, null, null +		); +	} + +	public function user_list_trim_data() +	{ +		return array( +			array( +				array( +					'topic_title'	=> 'Test', +					'poster_id'		=> 2, +					'post_username'	=> 'A', +					'responders'	=> null,			 +				), +				'A replied to the topic “Test”.', +			), +			array( +				array( +					'topic_title'	=> 'Test', +					'poster_id'		=> 2, +					'post_username'	=> 'A', +					'responders'	=> array( +						array('username' => '', 'poster_id' => 3), +					),			 +				), +				'A and B replied to the topic “Test”.', +			), +			array( +				array( +					'topic_title'	=> 'Test', +					'poster_id'		=> 2, +					'post_username'	=> 'A', +					'responders'	=> array( +						array('username' => '', 'poster_id' => 3), +						array('username' => '', 'poster_id' => 4), +					),			 +				), +				'A, B, and C replied to the topic “Test”.', +			), +			array( +				array( +					'topic_title'	=> 'Test', +					'poster_id'		=> 2, +					'post_username'	=> 'A', +					'responders'	=> array( +						array('username' => '', 'poster_id' => 3), +						array('username' => '', 'poster_id' => 4), +						array('username' => '', 'poster_id' => 5), +					),			 +				), +				'A, B, C, and D replied to the topic “Test”.', +			), +			array( +				array( +					'topic_title'	=> 'Test', +					'poster_id'		=> 2, +					'post_username'	=> 'A', +					'responders'	=> array( +						array('username' => '', 'poster_id' => 3), +						array('username' => '', 'poster_id' => 4), +						array('username' => '', 'poster_id' => 5), +						array('username' => '', 'poster_id' => 6), +					),			 +				), +				'A, B, C, and 2 others replied to the topic “Test”.', +			), +		); +	} + +	/** +	* @dataProvider user_list_trim_data +	*/ +	public function test_user_list_trim($data, $expected_result) +	{ +		$data = array('notification_data' => serialize($data)); +		$this->notification->set_initial_data($data); + +		$this->assertEquals($expected_result, $this->notification->get_title()); +	} +} diff --git a/tests/test_framework/phpbb_database_test_case.php b/tests/test_framework/phpbb_database_test_case.php index 4c2e9ff600..aacdb1bef4 100644 --- a/tests/test_framework/phpbb_database_test_case.php +++ b/tests/test_framework/phpbb_database_test_case.php @@ -138,7 +138,7 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test  		if (!self::$already_connected)  		{ -			$manager->load_schema(); +			$manager->load_schema($this->new_dbal());  			self::$already_connected = true;  		} diff --git a/tests/test_framework/phpbb_database_test_connection_manager.php b/tests/test_framework/phpbb_database_test_connection_manager.php index af9bd22662..5d8dae4a30 100644 --- a/tests/test_framework/phpbb_database_test_connection_manager.php +++ b/tests/test_framework/phpbb_database_test_connection_manager.php @@ -169,12 +169,12 @@ class phpbb_database_test_connection_manager  	/**  	* Load the phpBB database schema into the database  	*/ -	public function load_schema() +	public function load_schema($db)  	{  		$this->ensure_connected(__METHOD__);  		$directory = dirname(__FILE__) . '/../../phpBB/install/schemas/'; -		$this->load_schema_from_file($directory); +		$this->load_schema_from_file($directory, $db);  	}  	/** @@ -321,7 +321,7 @@ class phpbb_database_test_connection_manager  	* Compile the correct schema filename (as per create_schema_files) and  	* load it into the database.  	*/ -	protected function load_schema_from_file($directory) +	protected function load_schema_from_file($directory, \phpbb\db\driver\driver $db)  	{  		$schema = $this->dbms['SCHEMA']; @@ -351,6 +351,23 @@ class phpbb_database_test_connection_manager  		{  			$this->pdo->exec($query);  		} + +		// Ok we have the db info go ahead and work on building the table +		$db_table_schema = file_get_contents($directory . 'schema.json'); +		$db_table_schema = json_decode($db_table_schema, true); + +		$db_tools = new \phpbb\db\tools($db, true); +		foreach ($db_table_schema as $table_name => $table_data) +		{ +			$queries = $db_tools->sql_create_table( +				$table_name, +				$table_data +			); +			foreach ($queries as $query) +			{ +				$this->pdo->exec($query); +			} +		}  	}  	/**  | 
