Merge branch 'MDL-67084-master' of git://github.com/junpataleta/moodle

This commit is contained in:
Jun Pataleta
2019-11-07 19:40:55 +08:00
2 changed files with 30 additions and 12 deletions
+4 -4
View File
@@ -241,10 +241,10 @@ class MoodleQuickForm_duration extends MoodleQuickForm_group {
* Override of standard quickforms method.
*
* @param array $submitValues
* @param bool $notused Not used.
* @param bool $assoc whether to return the value as associative array
* @return array field name => value. The value is the time interval in seconds.
*/
function exportValue(&$submitValues, $notused = false) {
function exportValue(&$submitValues, $assoc = false) {
// Get the values from all the child elements.
$valuearray = array();
foreach ($this->_elements as $element) {
@@ -259,8 +259,8 @@ class MoodleQuickForm_duration extends MoodleQuickForm_group {
return null;
}
if ($this->_options['optional'] && empty($valuearray['enabled'])) {
return array($this->getName() => 0);
return $this->_prepareValue(0, $assoc);
}
return array($this->getName() => $valuearray['number'] * $valuearray['timeunit']);
return $this->_prepareValue($valuearray['number'] * $valuearray['timeunit'], $assoc);
}
}
+26 -8
View File
@@ -108,25 +108,43 @@ class core_form_duration_testcase extends basic_testcase {
* Testcase to check generated timestamp
*/
public function test_exportValue() {
/** @var MoodleQuickForm_duration $el */
$el = $this->mform->addElement('duration', 'testel');
$values = array('testel' => array('number' => 10, 'timeunit' => 1));
$this->assertEquals(array('testel' => 10), $el->exportValue($values));
$this->assertEquals(array('testel' => 10), $el->exportValue($values, true));
$this->assertEquals(10, $el->exportValue($values));
$values = array('testel' => array('number' => 3, 'timeunit' => 60));
$this->assertEquals(array('testel' => 180), $el->exportValue($values));
$this->assertEquals(array('testel' => 180), $el->exportValue($values, true));
$this->assertEquals(180, $el->exportValue($values));
$values = array('testel' => array('number' => 1.5, 'timeunit' => 60));
$this->assertEquals(array('testel' => 90), $el->exportValue($values));
$this->assertEquals(array('testel' => 90), $el->exportValue($values, true));
$this->assertEquals(90, $el->exportValue($values));
$values = array('testel' => array('number' => 2, 'timeunit' => 3600));
$this->assertEquals(array('testel' => 7200), $el->exportValue($values));
$this->assertEquals(array('testel' => 7200), $el->exportValue($values, true));
$this->assertEquals(7200, $el->exportValue($values));
$values = array('testel' => array('number' => 1, 'timeunit' => 86400));
$this->assertEquals(array('testel' => 86400), $el->exportValue($values));
$this->assertEquals(array('testel' => 86400), $el->exportValue($values, true));
$this->assertEquals(86400, $el->exportValue($values));
$values = array('testel' => array('number' => 0, 'timeunit' => 3600));
$this->assertEquals(array('testel' => 0), $el->exportValue($values));
$this->assertEquals(array('testel' => 0), $el->exportValue($values, true));
$this->assertEquals(0, $el->exportValue($values));
$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));
$this->assertEquals(array('testel' => 0), $el->exportValue($values, true));
$this->assertEquals(0, $el->exportValue($values));
$values = array('testel' => array('number' => 20, 'timeunit' => 1, 'enabled' => 1));
$this->assertEquals(array('testel' => 20), $el->exportValue($values));
$this->assertEquals(array('testel' => 20), $el->exportValue($values, true));
$this->assertEquals(20, $el->exportValue($values));
// Optional element.
$el2 = $this->mform->addElement('duration', 'testel', '', ['optional' => true]);
$values = array('testel' => array('number' => 10, 'timeunit' => 1, 'enabled' => 1));
$this->assertEquals(array('testel' => 10), $el2->exportValue($values, true));
$this->assertEquals(10, $el2->exportValue($values));
$values = array('testel' => array('number' => 10, 'timeunit' => 1, 'enabled' => 0));
$this->assertEquals(array('testel' => 0), $el2->exportValue($values, true));
$this->assertEquals(null, $el2->exportValue($values));
}
}