Skip to content

Commit

Permalink
MDL-68315 formslib: Fix completion attribute in course form element.
Browse files Browse the repository at this point in the history
This fixes 'onlywithcompletion' attribute in course form element.
  • Loading branch information
kabalin committed Apr 3, 2020
1 parent d939d6e commit 52a268a
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 3 deletions.
7 changes: 4 additions & 3 deletions lib/form/course.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ class MoodleQuickForm_course extends MoodleQuickForm_autocomplete {
* 'requiredcapabilities' - array of capabilities. Uses ANY to combine them.
* 'limittoenrolled' - boolean Limits to enrolled courses.
* 'includefrontpage' - boolean Enables the frontpage to be selected.
* 'onlywithcompletion' - only courses where completion is enabled
* 'onlywithcompletion' - boolean Limits to courses where completion is enabled.
*/
public function __construct($elementname = null, $elementlabel = null, $attributes = array()) {
if (!is_array($attributes)) {
Expand Down Expand Up @@ -105,8 +105,9 @@ public function __construct($elementname = null, $elementlabel = null, $attribut
$attributes['data-includefrontpage'] = SITEID;
unset($attributes['includefrontpage']);
}
if (!empty($options['onlywithcompletion'])) {
$validattributes['data-onlywithcompletion'] = 1;
if (!empty($attributes['onlywithcompletion'])) {
$attributes['data-onlywithcompletion'] = 1;
unset($attributes['onlywithcompletion']);
}

parent::__construct($elementname, $elementlabel, array(), $attributes);
Expand Down
77 changes: 77 additions & 0 deletions lib/form/tests/course_test.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<?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/>.

/**
* Unit tests for MoodleQuickForm_course.
*
* This file contains unit tests related to course forms element.
*
* @package core_form
* @category test
* @copyright 2020 Ruslan Kabalin
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

defined('MOODLE_INTERNAL') || die();

global $CFG;
require_once($CFG->libdir . '/form/course.php');

/**
* Unit tests for MoodleQuickForm_course
*
* Contains test cases for testing MoodleQuickForm_course.
*
* @package core_form
* @category test
* @copyright 2020 Ruslan Kabalin
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class core_form_course_testcase extends basic_testcase {

/**
* Test constructor supports all declared attributes.
*/
public function test_constructor_attributes() {
$attributes = [
'exclude' => [1, 2],
'requiredcapabilities' => ['moodle/course:update'],
];

$element = new MoodleQuickForm_course('testel', null, $attributes);
$html = $element->toHtml();
$this->assertContains('data-exclude="1,2"', $html);
$this->assertContains('data-requiredcapabilities="moodle/course:update"', $html);
$this->assertContains('data-limittoenrolled="0"', $html);
$this->assertNotContains('multiple', $html);
$this->assertNotContains('data-includefrontpage', $html);
$this->assertNotContains('data-onlywithcompletion', $html);

// Add more attributes.
$attributes = [
'multiple' => true,
'limittoenrolled' => true,
'includefrontpage' => true,
'onlywithcompletion' => true,
];
$element = new MoodleQuickForm_course('testel', null, $attributes);
$html = $element->toHtml();
$this->assertContains('multiple', $html);
$this->assertContains('data-limittoenrolled="1"', $html);
$this->assertContains('data-includefrontpage="' . SITEID . '"', $html);
$this->assertContains('data-onlywithcompletion="1"', $html);
}
}

0 comments on commit 52a268a

Please sign in to comment.