MDL-52263 libraries: Add test cases to external_format_text options
authorPau Ferrer Ocaña <crazyserver@gmail.com>
Tue, 12 Apr 2016 12:36:07 +0000 (14:36 +0200)
committerPau Ferrer Ocaña <crazyserver@gmail.com>
Tue, 12 Apr 2016 13:05:46 +0000 (15:05 +0200)
lib/externallib.php
lib/tests/externallib_test.php

index 81e3b15..02a1e67 100644 (file)
@@ -836,7 +836,7 @@ function external_format_text($text, $textformat, $contextid, $component, $filea
         // If context is passed in options, check that is the same to show a debug message.
         if (isset($options['context'])) {
             if ((is_object($options['context']) && $options['context']->id != $contextid)
-                    || $options['context'] != $contextid) {
+                    || (!is_object($options['context']) && $options['context'] != $contextid)) {
                 debugging('Different contexts found in external_format_text parameters. $options[\'context\'] not allowed.
                     Using $contextid parameter...', DEBUG_DEVELOPER);
             }
index b3b0198..32a692d 100644 (file)
@@ -96,6 +96,40 @@ class core_externallib_testcase extends advanced_testcase {
 </span></span>', FORMAT_HTML);
         $this->assertSame(external_format_text($test, $testformat, $context->id, 'core', '', 0), $correct);
 
+        $test = '<p><a id="test"></a><a href="#test">Text</a></p>';
+        $testformat = FORMAT_HTML;
+        $correct = array($test, FORMAT_HTML);
+        $options = array('allowid' => true);
+        $this->assertSame(external_format_text($test, $testformat, $context->id, 'core', '', 0, $options), $correct);
+
+        $test = '<p><a id="test"></a><a href="#test">Text</a></p>';
+        $testformat = FORMAT_HTML;
+        $correct = array('<p><a></a><a href="#test">Text</a></p>', FORMAT_HTML);
+        $options = new StdClass();
+        $options->allowid = false;
+        $this->assertSame(external_format_text($test, $testformat, $context->id, 'core', '', 0, $options), $correct);
+
+        $test = '<p><a id="test"></a><a href="#test">Text</a></p>'."\n".'Newline';
+        $testformat = FORMAT_MOODLE;
+        $correct = array('<p><a id="test"></a><a href="#test">Text</a></p> Newline', FORMAT_HTML);
+        $options = new StdClass();
+        $options->newlines = false;
+        $this->assertSame(external_format_text($test, $testformat, $context->id, 'core', '', 0, $options), $correct);
+
+        $test = '<p><a id="test"></a><a href="#test">Text</a></p>';
+        $testformat = FORMAT_MOODLE;
+        $correct = array('<div class="text_to_html">'.$test.'</div>', FORMAT_HTML);
+        $options = new StdClass();
+        $options->para = true;
+        $this->assertSame(external_format_text($test, $testformat, $context->id, 'core', '', 0, $options), $correct);
+
+        $test = '<p><a id="test"></a><a href="#test">Text</a></p>';
+        $testformat = FORMAT_MOODLE;
+        $correct = array($test, FORMAT_HTML);
+        $options = new StdClass();
+        $options->context = $context;
+        $this->assertSame(external_format_text($test, $testformat, $context->id, 'core', '', 0, $options), $correct);
+
         $settings->set_raw($currentraw);
         $settings->set_filter($currentfilter);
     }