Merge branch 'MDL-56233-31-mocksubmit' of https://github.com/roperto/moodle into MOODLE_31_STABLE

This commit is contained in:
Dan Poltawski
2016-12-06 12:42:05 +00:00
3 changed files with 67 additions and 0 deletions
+1
View File
@@ -1362,6 +1362,7 @@ abstract class moodleform {
$_FILES = $simulatedsubmittedfiles;
if ($formidentifier === null) {
$formidentifier = get_called_class();
$formidentifier = str_replace('\\', '_', $formidentifier); // See MDL-56233 for more information.
}
$simulatedsubmitteddata['_qf__'.$formidentifier] = 1;
$simulatedsubmitteddata['sesskey'] = sesskey();
+49
View File
@@ -0,0 +1,49 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* A form inside a namespace to be used by unit tests.
*
* See issue MDL-56233
*
* @package core
* @author Daniel Thee Roperto <[email protected]>
* @copyright 2016 Catalyst IT
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace local_unittests\namespaced_form;
defined('MOODLE_INTERNAL') || die();
/**
* exampleform class.
*
* @package core
* @author Daniel Thee Roperto <[email protected]>
* @copyright 2016 Catalyst IT
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class exampleform extends \moodleform {
/**
* Create a simple form definition.
*/
public function definition() {
$mform = $this->_form;
$mform->addElement('text', 'title', 'title_value');
$mform->setType('title', PARAM_TEXT);
}
}
+17
View File
@@ -625,6 +625,23 @@ class core_formslib_testcase extends advanced_testcase {
$this->assertFalse($form->is_validated());
$this->assertNull($form->get_data());
}
/**
* MDL-56233 - Tests mocking a form inside a namespace.
*/
public function test_mock_submit() {
require_once(__DIR__.'/fixtures/namespaced_form.php');
\local_unittests\namespaced_form\exampleform::mock_submit(['title' => 'Mocked Value']);
$form = new \local_unittests\namespaced_form\exampleform();
// Here is the problem, this is the expected hidden field name.
$expected = '_qf__local_unittests_namespaced_form_exampleform';
self::assertArrayHasKey($expected, $_POST);
// This should work now, before it would fail.
self::assertTrue($form->is_submitted());
self::assertSame('Mocked Value', $form->get_data()->title);
}
}