MDL-55123 forms: correctly create elements in unittests

This commit is contained in:
Marina Glancy 2016-09-12 11:56:04 +08:00
parent 0344082208
commit 64c45a2928
4 changed files with 79 additions and 23 deletions

View File

@ -50,6 +50,8 @@ require_once($CFG->dirroot . '/user/profile/index_field_form.php');
* @since Moodle 2.6
*/
class core_calendar_type_testcase extends advanced_testcase {
/** @var MoodleQuickForm Keeps reference of dummy form object */
private $mform;
/**
* The test user.
@ -63,6 +65,10 @@ class core_calendar_type_testcase extends advanced_testcase {
// The user we are going to test this on.
$this->user = self::getDataGenerator()->create_user();
self::setUser($this->user);
// Get form data.
$form = new temp_form_calendartype();
$this->mform = $form->getform();
}
/**
@ -216,15 +222,17 @@ class core_calendar_type_testcase extends advanced_testcase {
private function convert_dateselector_to_unixtime_test($element, $type, $date) {
$this->set_calendar_type($type);
if ($element == 'dateselector') {
$el = new MoodleQuickForm_date_selector('dateselector', null, array('timezone' => 0.0, 'step' => 1));
} else {
$el = new MoodleQuickForm_date_time_selector('dateselector', null, array('timezone' => 0.0, 'step' => 1));
}
$el->_createElements();
$submitvalues = array('dateselector' => $date);
static $counter = 0;
$counter++;
$this->assertSame($el->exportValue($submitvalues), array('dateselector' => $date['timestamp']));
if ($element == 'dateselector') {
$el = $this->mform->addElement('date_selector', 'dateselector' . $counter, null, array('timezone' => 0.0, 'step' => 1));
} else {
$el = $this->mform->addElement('date_time_selector', 'dateselector' . $counter, null, array('timezone' => 0.0, 'step' => 1, 'optional' => false));
}
$submitvalues = array('dateselector' . $counter => $date);
$this->assertSame($el->exportValue($submitvalues), array('dateselector' . $counter => $date['timestamp']));
}
/**
@ -300,3 +308,25 @@ class core_calendar_type_testcase extends advanced_testcase {
\core\session\manager::set_user($this->user);
}
}
/**
* Form object to be used in test case.
*/
class temp_form_calendartype extends moodleform {
/**
* Form definition.
*/
public function definition() {
// No definition required.
}
/**
* Returns form reference
* @return MoodleQuickForm
*/
public function getform() {
$mform = $this->_form;
// Set submitted flag, to simulate submission.
$mform->_flagSubmitted = true;
return $mform;
}
}

View File

@ -129,8 +129,8 @@ class core_form_dateselector_testcase extends advanced_testcase {
// Create dateselector element with different timezones.
$elparams = array('optional'=>false, 'timezone' => $vals['timezone']);
$el = new MoodleQuickForm_date_selector('dateselector', null, $elparams);
$el->_createElements();
$el = $this->mform->addElement('date_selector', 'dateselector', null, $elparams);
$this->assertTrue($el instanceof MoodleQuickForm_date_selector);
$submitvalues = array('dateselector' => $vals);
$this->assertSame(array('dateselector' => $vals['timestamp']), $el->exportValue($submitvalues),
@ -153,8 +153,8 @@ class core_form_dateselector_testcase extends advanced_testcase {
// Create dateselector element with different timezones.
$elparams = array('optional'=>false, 'timezone' => $vals['timezone']);
$el = new MoodleQuickForm_date_selector('dateselector', null, $elparams);
$el->_createElements();
$el = $this->mform->addElement('date_selector', 'dateselector', null, $elparams);
$this->assertTrue($el instanceof MoodleQuickForm_date_selector);
$expectedvalues = array(
'day' => array($vals['day']),
'month' => array($vals['month']),

View File

@ -141,8 +141,8 @@ class core_form_datetimeselector_testcase extends advanced_testcase {
// Create dateselector element with different timezones.
$elparams = array('optional'=>false, 'timezone' => $vals['timezone']);
$el = new MoodleQuickForm_date_time_selector('dateselector', null, $elparams);
$el->_createElements();
$el = $this->mform->addElement('date_time_selector', 'dateselector', null, $elparams);
$this->assertTrue($el instanceof MoodleQuickForm_date_time_selector);
$submitvalues = array('dateselector' => $vals);
$this->assertSame(array('dateselector' => $vals['timestamp']), $el->exportValue($submitvalues),
@ -165,8 +165,8 @@ class core_form_datetimeselector_testcase extends advanced_testcase {
// Create dateselector element with different timezones.
$elparams = array('optional'=>false, 'timezone' => $vals['timezone']);
$el = new MoodleQuickForm_date_time_selector('dateselector', null, $elparams);
$el->_createElements();
$el = $this->mform->addElement('date_time_selector', 'dateselector', null, $elparams);
$this->assertTrue($el instanceof MoodleQuickForm_date_time_selector);
$expectedvalues = array(
'day' => array($vals['day']),
'month' => array($vals['month']),

View File

@ -41,6 +41,8 @@ require_once($CFG->libdir . '/form/duration.php');
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class core_form_duration_testcase extends basic_testcase {
/** @var MoodleQuickForm Keeps reference of dummy form object */
private $mform;
/** @var MoodleQuickForm_duration Keeps reference of MoodleQuickForm_duration object */
private $element;
@ -49,7 +51,11 @@ class core_form_duration_testcase extends basic_testcase {
*/
protected function setUp() {
parent::setUp();
$this->element = new MoodleQuickForm_duration();
// Get form data.
$form = new temp_form_duration();
$this->mform = $form->getform();
$this->element = $this->mform->addElement('duration', 'duration');
}
/**
@ -67,7 +73,7 @@ class core_form_duration_testcase extends basic_testcase {
*/
public function test_constructor() {
// Test trying to create with an invalid unit.
$this->element = new MoodleQuickForm_duration('testel', null, array('defaultunit' => 123));
$this->element = $this->mform->addElement('duration', 'testel', null, array('defaultunit' => 123, 'optional' => false));
}
/**
@ -94,7 +100,7 @@ class core_form_duration_testcase extends basic_testcase {
$this->assertEquals(array(1, 86400), $this->element->seconds_to_unit(86400));
$this->assertEquals(array(25, 3600), $this->element->seconds_to_unit(90000));
$this->element = new MoodleQuickForm_duration('testel', null, array('defaultunit' => 86400));
$this->element = $this->mform->addElement('duration', 'testel', null, array('defaultunit' => 86400, 'optional' => false));
$this->assertEquals(array(0, 86400), $this->element->seconds_to_unit(0)); // Zero minutes, for a nice default unit.
}
@ -102,8 +108,7 @@ class core_form_duration_testcase extends basic_testcase {
* Testcase to check generated timestamp
*/
public function test_exportValue() {
$el = new MoodleQuickForm_duration('testel');
$el->_createElements();
$el = $this->mform->addElement('duration', 'testel');
$values = array('testel' => array('number' => 10, 'timeunit' => 1));
$this->assertEquals(array('testel' => 10), $el->exportValue($values));
$values = array('testel' => array('number' => 3, 'timeunit' => 60));
@ -117,11 +122,32 @@ class core_form_duration_testcase extends basic_testcase {
$values = array('testel' => array('number' => 0, 'timeunit' => 3600));
$this->assertEquals(array('testel' => 0), $el->exportValue($values));
$el = new MoodleQuickForm_duration('testel', null, array('optional' => true));
$el->_createElements();
$el = $this->mform->addElement('duration', 'testel', null, array('optional' => true));
$values = array('testel' => array('number' => 10, 'timeunit' => 1));
$this->assertEquals(array('testel' => 0), $el->exportValue($values));
$values = array('testel' => array('number' => 20, 'timeunit' => 1, 'enabled' => 1));
$this->assertEquals(array('testel' => 20), $el->exportValue($values));
}
}
/**
* Form object to be used in test case.
*/
class temp_form_duration extends moodleform {
/**
* Form definition.
*/
public function definition() {
// No definition required.
}
/**
* Returns form reference
* @return MoodleQuickForm
*/
public function getform() {
$mform = $this->_form;
// Set submitted flag, to simulate submission.
$mform->_flagSubmitted = true;
return $mform;
}
}