diff --git a/tests/test_framework/phpbb_test_case_helpers.php b/tests/test_framework/phpbb_test_case_helpers.php index 6efb15a4fb..3e28a3271b 100644 --- a/tests/test_framework/phpbb_test_case_helpers.php +++ b/tests/test_framework/phpbb_test_case_helpers.php @@ -592,7 +592,7 @@ class phpbb_test_case_helpers // Create and register a mention_helper $mention_helper = new \phpbb\textformatter\s9e\mention_helper( - $db_driver, + ($container->has('dbal.conn')) ? $container->get('dbal.conn') : $db_driver, $auth, $container->get('user'), $phpbb_root_path, diff --git a/tests/text_formatter/s9e/fixtures/mention.xml b/tests/text_formatter/s9e/fixtures/mention.xml new file mode 100644 index 0000000000..9174029fd8 --- /dev/null +++ b/tests/text_formatter/s9e/fixtures/mention.xml @@ -0,0 +1,116 @@ + + + + group_id + group_name + group_type + group_colour + group_desc + + 1 + Normal group + 0 + + + + + 2 + Hidden group + 2 + + + + + 3 + Hidden group we are a member of + 2 + FF0000 + + +
+ + user_id + username + username_clean + user_type + user_lastvisit + user_colour + user_permissions + user_sig + + 2 + myself + myself + 0 + 0 + + + + + + 3 + test + test + 0 + 0 + 00FF00 + + + + + 4 + group_member_normal + group_member_normal + 0 + 0 + + + + + + 5 + group_member_hidden + group_member_hidden + 0 + 0 + + + + + + 6 + group_member_visible + group_member_visible + 0 + 0 + + + + +
+ + user_id + group_id + user_pending + + 2 + 3 + 0 + + + 4 + 1 + 0 + + + 5 + 2 + 0 + + + 6 + 3 + 0 + +
+
diff --git a/tests/text_formatter/s9e/mention_helper_test.php b/tests/text_formatter/s9e/mention_helper_test.php new file mode 100644 index 0000000000..3cebdd950c --- /dev/null +++ b/tests/text_formatter/s9e/mention_helper_test.php @@ -0,0 +1,126 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +use Symfony\Component\Config\FileLocator; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; + +class mention_helper_test extends phpbb_database_test_case +{ + protected $db, $container, $user, $auth; + + /** + * @var \phpbb\textformatter\s9e\mention_helper + */ + protected $mention_helper; + + public function getDataSet() + { + return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/mention.xml'); + } + + public function setUp() + { + parent::setUp(); + + global $auth, $db, $phpbb_container, $phpEx, $phpbb_root_path; + + // Database + $this->db = $this->new_dbal(); + $db = $this->db; + + // Auth + $auth = $this->createMock('\phpbb\auth\auth'); + $auth->expects($this->any()) + ->method('acl_gets') + ->with('a_group', 'a_groupadd', 'a_groupdel') + ->willReturn(false) + ; + + // Language + $lang = new \phpbb\language\language(new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx)); + + // User + $user = $this->createMock('\phpbb\user', array(), array( + $lang, + '\phpbb\datetime' + )); + $user->ip = ''; + $user->data = array( + 'user_id' => 2, + 'username' => 'myself', + 'is_registered' => true, + 'user_colour' => '', + ); + + // Container + $phpbb_container = new ContainerBuilder(); + + $phpbb_container->set('dbal.conn', $db); + $phpbb_container->set('auth', $auth); + $phpbb_container->set('user', $user); + + $container = $this->get_test_case_helpers()->set_s9e_services($phpbb_container); + $this->mention_helper = $container->get('text_formatter.s9e.mention_helper'); + + $phpbb_container->compile(); + } + + public function inject_metadata_data() + { + return [ + [ + '[mention=u:3]test[/mention]', + 'mode=viewprofile&u=3', + 'color="00FF00"', + ], + [ + '[mention=g:3]test[/mention]', + 'mode=group&g=3', + 'color="FF0000"', + ], + ]; + } + + /** + * @dataProvider inject_metadata_data + */ + public function test_inject_metadata($incoming_xml, $expected_profile_substring, $expected_colour) + { + $result = $this->mention_helper->inject_metadata($incoming_xml); + $this->assertContains($expected_profile_substring, $result); + $this->assertContains($expected_colour, $result); + } + + public function get_mentioned_user_ids_data() + { + return [ + [ + '[mention=u:3]test[/mention][mention=u:4]test[/mention][mention=u:5]test[/mention]', + [3, 4, 5], + ], + [ + '[mention=g:1]test[/mention][mention=g:2]test[/mention][mention=g:3]test[/mention]', + [4, 2, 6], + ], + ]; + } + + /** + * @dataProvider get_mentioned_user_ids_data + */ + public function test_get_mentioned_user_ids($incoming_xml, $expected_result) + { + $this->assertSame($expected_result, $this->mention_helper->get_mentioned_user_ids($incoming_xml)); + } +}