MDL-69507 duration form field: should return an int number of seconds

This commit is contained in:
Tim Hunt
2020-09-01 11:38:36 +08:00
committed by Andrew Nicols
parent 9e9a1db47a
commit 33f880fba7
2 changed files with 14 additions and 1 deletions
+1 -1
View File
@@ -261,6 +261,6 @@ class MoodleQuickForm_duration extends MoodleQuickForm_group {
if ($this->_options['optional'] && empty($valuearray['enabled'])) {
return $this->_prepareValue(0, $assoc);
}
return $this->_prepareValue($valuearray['number'] * $valuearray['timeunit'], $assoc);
return $this->_prepareValue((int) round($valuearray['number'] * $valuearray['timeunit']), $assoc);
}
}
+13
View File
@@ -113,18 +113,31 @@ class core_form_duration_testcase extends basic_testcase {
$values = array('testel' => array('number' => 10, 'timeunit' => 1));
$this->assertEquals(array('testel' => 10), $el->exportValue($values, true));
$this->assertEquals(10, $el->exportValue($values));
$values = array('testel' => array('number' => 9.3, 'timeunit' => 1));
$this->assertEquals(array('testel' => 9), $el->exportValue($values, true));
$this->assertEquals(9, $el->exportValue($values));
$values = array('testel' => array('number' => 9.5, 'timeunit' => 1));
$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, true));
$this->assertEquals(180, $el->exportValue($values));
$values = array('testel' => array('number' => 1.5, 'timeunit' => 60));
$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, true));
$this->assertEquals(7200, $el->exportValue($values));
$values = array('testel' => array('number' => 1, 'timeunit' => 86400));
$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, true));
$this->assertEquals(0, $el->exportValue($values));