* @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 __DIR__ . '/../../phpBB/includes/functions.php'; require_once __DIR__ . '/../../phpBB/includes/functions_content.php'; require_once __DIR__ . '/../test_framework/phpbb_database_test_case.php'; abstract class phpbb_textreparser_test_row_based_plugin extends phpbb_database_test_case { protected $db; abstract protected function get_reparser(); public function setUp() { global $config; if (!isset($config)) { $config = new \phpbb\config\config(array()); } $this->get_test_case_helpers()->set_s9e_services(); $this->db = $this->new_dbal(); parent::setUp(); } /** * @dataProvider getReparseTests */ public function testReparse($min_id, $max_id, $expected) { $reparser = $this->get_reparser(); $reparser->reparse_range($min_id, $max_id); $ids = array(); foreach ($expected as $row) { $ids[] = $row['id']; } $columns = $reparser->get_columns(); $sql = 'SELECT ' . $columns['id'] . ' AS id, ' . $columns['text'] . ' AS text FROM ' . $reparser->get_table_name() . ' WHERE ' . $this->db->sql_in_set($columns['id'], $ids) . ' ORDER BY id'; $result = $this->db->sql_query($sql); $rows = $this->db->sql_fetchrowset($result); $this->db->sql_freeresult($result); $this->assertEquals($expected, $rows); } public function getReparseTests() { return array( array( 2, 5, array( array( 'id' => '1', 'text' => 'This row should be [b]ignored[/b]', ), array( 'id' => '2', 'text' => '[b]Not bold[/b] :) http://example.org', ), array( 'id' => '3', 'text' => '[b]Bold[/b] :) http://example.org', ), array( 'id' => '4', 'text' => '[b]Not bold[/b] :) http://example.org', ), array( 'id' => '5', 'text' => '[b]Not bold[/b] :) http://example.org', ), array( 'id' => '1000', 'text' => 'This row should be [b]ignored[/b]', ), ) ), array( 6, 7, array( array( 'id' => '6', 'text' => '[flash=123,345]http://example.org/flash.swf[/flash]', ), array( 'id' => '7', 'text' => '[flash=123,345]http://example.org/flash.swf[/flash]', ), ) ), array( 8, 9, array( array( 'id' => '8', 'text' => '[img]http://example.org/img.png[/img]', ), array( 'id' => '9', 'text' => '[img]http://example.org/img.png[/img]', ), ) ), ); } }