aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshyPHP <s9e.dev@gmail.com>2015-05-02 02:55:45 +0200
committerJoshyPHP <s9e.dev@gmail.com>2015-05-30 17:26:00 +0200
commit9bf0f794b5876b10491c91548f1a92bc0dff7400 (patch)
tree3da5c0d8e5a9b7d9bd99cd75a055d5f00a4477eb
parentea445ffa4776b7ce0b1d13485f113c7e1ec28af0 (diff)
downloadforums-9bf0f794b5876b10491c91548f1a92bc0dff7400.tar
forums-9bf0f794b5876b10491c91548f1a92bc0dff7400.tar.gz
forums-9bf0f794b5876b10491c91548f1a92bc0dff7400.tar.bz2
forums-9bf0f794b5876b10491c91548f1a92bc0dff7400.tar.xz
forums-9bf0f794b5876b10491c91548f1a92bc0dff7400.zip
[ticket/13803] Added pm_text tests
PHPBB3-13803
-rw-r--r--phpBB/phpbb/textreparser/base.php38
-rw-r--r--phpBB/phpbb/textreparser/row_based_plugin.php32
-rw-r--r--tests/text_reparser/fixtures/privmsgs.xml73
-rw-r--r--tests/text_reparser/pm_text_test.php26
4 files changed, 136 insertions, 33 deletions
diff --git a/phpBB/phpbb/textreparser/base.php b/phpBB/phpbb/textreparser/base.php
index f3f31ca320..2d4a4171af 100644
--- a/phpBB/phpbb/textreparser/base.php
+++ b/phpBB/phpbb/textreparser/base.php
@@ -30,6 +30,38 @@ abstract class base implements reparser_interface
abstract protected function get_records($min_id, $max_id);
/**
+ * Add fields to given record, if applicable
+ *
+ * The enable_* fields are not always saved to the database. Sometimes we need to guess their
+ * original value based on the text content or possibly other fields
+ *
+ * @param array $record Original record
+ * @return array Complete record
+ */
+ protected function add_missing_fields(array $record)
+ {
+ if (!isset($record['enable_bbcode'], $record['enable_smilies'], $record['enable_magic_url']))
+ {
+ $record += array(
+ 'enable_bbcode' => !empty($record['bbcode_uid']),
+ 'enable_smilies' => $this->guess_smilies($record),
+ 'enable_magic_url' => $this->guess_magic_url($record),
+ );
+ }
+
+ // Those BBCodes are disabled based on context and user permissions and that value is never
+ // stored in the database. Here we test whether they were used in the original text.
+ $bbcodes = array('flash', 'img', 'quote', 'url');
+ foreach ($bbcodes as $bbcode)
+ {
+ $field_name = 'enable_' . $bbcode . '_bbcode';
+ $record[$field_name] = $this->guess_bbcode($record, $bbcode);
+ }
+
+ return $record;
+ }
+
+ /**
* Guess whether given BBCode is in use in given record
*
* @param array $record
@@ -120,7 +152,11 @@ abstract class base implements reparser_interface
$flags,
$unparsed['enable_bbcode'],
$unparsed['enable_magic_url'],
- $unparsed['enable_smilies']
+ $unparsed['enable_smilies'],
+ $unparsed['enable_img_bbcode'],
+ $unparsed['enable_flash_bbcode'],
+ $unparsed['enable_quote_bbcode'],
+ $unparsed['enable_url_bbcode']
);
// Save the new text if it has changed
diff --git a/phpBB/phpbb/textreparser/row_based_plugin.php b/phpBB/phpbb/textreparser/row_based_plugin.php
index 80525a404e..e39ec4d5d3 100644
--- a/phpBB/phpbb/textreparser/row_based_plugin.php
+++ b/phpBB/phpbb/textreparser/row_based_plugin.php
@@ -45,38 +45,6 @@ abstract class row_based_plugin extends base
abstract public function get_table_name();
/**
- * Add fields to given row, if applicable
- *
- * The enable_* fields are not always saved to the database. Sometimes we need to guess their
- * original value based on the text content or possibly other fields
- *
- * @param array $row Original row
- * @return array Complete row
- */
- protected function add_missing_fields(array $row)
- {
- if (!isset($row['enable_bbcode'], $row['enable_smilies'], $row['enable_magic_url']))
- {
- $row += array(
- 'enable_bbcode' => !empty($row['bbcode_uid']),
- 'enable_smilies' => $this->guess_smilies($row),
- 'enable_magic_url' => $this->guess_magic_url($row),
- );
- }
-
- // Those BBCodes are disabled based on context and user permissions and that value is never
- // stored in the database. Here we test whether they were used in the original text.
- $bbcodes = array('flash', 'img', 'quote', 'url');
- foreach ($bbcodes as $bbcode)
- {
- $field_name = 'enable_' . $bbcode;
- $row[$field_name] = $this->guess_bbcode($row, $bbcode);
- }
-
- return $row;
- }
-
- /**
* {@inheritdoc}
*/
public function get_max_id()
diff --git a/tests/text_reparser/fixtures/privmsgs.xml b/tests/text_reparser/fixtures/privmsgs.xml
new file mode 100644
index 0000000000..9ca49a2af8
--- /dev/null
+++ b/tests/text_reparser/fixtures/privmsgs.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dataset>
+ <table name="phpbb_privmsgs">
+ <column>msg_id</column>
+ <column>enable_bbcode</column>
+ <column>enable_smilies</column>
+ <column>enable_magic_url</column>
+ <column>message_text</column>
+ <column>bbcode_uid</column>
+ <column>to_address</column>
+ <column>bcc_address</column>
+ <row>
+ <value>1</value>
+ <value>1</value>
+ <value>1</value>
+ <value>1</value>
+ <value>This row should be [b]ignored[/b]</value>
+ <value>abcd1234</value>
+ <value></value>
+ <value></value>
+ </row>
+ <row>
+ <value>2</value>
+ <value>0</value>
+ <value>0</value>
+ <value>0</value>
+ <value>[b]Not bold[/b] :) http://example.org</value>
+ <value>abcd1234</value>
+ <value></value>
+ <value></value>
+ </row>
+ <row>
+ <value>3</value>
+ <value>1</value>
+ <value>0</value>
+ <value>0</value>
+ <value>[b:abcd1234]Bold[/b:abcd1234] :) http://example.org</value>
+ <value>abcd1234</value>
+ <value></value>
+ <value></value>
+ </row>
+ <row>
+ <value>4</value>
+ <value>0</value>
+ <value>1</value>
+ <value>0</value>
+ <value><![CDATA[[b]Not bold[/b] <!-- s:) --><img src="{SMILIES_PATH}/icon_e_smile.gif" alt=":)" title="Smile" /><!-- s:) --> http://example.org]]></value>
+ <value>abcd1234</value>
+ <value></value>
+ <value></value>
+ </row>
+ <row>
+ <value>5</value>
+ <value>0</value>
+ <value>0</value>
+ <value>1</value>
+ <value><![CDATA[[b]Not bold[/b] :) <!-- m --><a class="postlink" href="http://example.org">http://example.org</a><!-- m -->]]></value>
+ <value>abcd1234</value>
+ <value></value>
+ <value></value>
+ </row>
+ <row>
+ <value>1000</value>
+ <value>1</value>
+ <value>1</value>
+ <value>1</value>
+ <value>This row should be [b]ignored[/b]</value>
+ <value>abcd1234</value>
+ <value></value>
+ <value></value>
+ </row>
+ </table>
+</dataset>
diff --git a/tests/text_reparser/pm_text_test.php b/tests/text_reparser/pm_text_test.php
new file mode 100644
index 0000000000..6b409d27e3
--- /dev/null
+++ b/tests/text_reparser/pm_text_test.php
@@ -0,0 +1,26 @@
+<?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.
+*
+*/
+include_once __DIR__ . '/test_row_based_plugin.php';
+
+class phpbb_textreparser_pm_text_test extends phpbb_textreparser_test_row_based_plugin
+{
+ public function getDataSet()
+ {
+ return $this->createXMLDataSet(__DIR__ . '/fixtures/privmsgs.xml');
+ }
+
+ public function get_reparser()
+ {
+ return new \phpbb\textreparser\plugins\pm_text($this->db);
+ }
+}