diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e88cd459..cfcf3583 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -45,7 +45,7 @@ jobs:
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
path: plugin
diff --git a/externallib.php b/externallib.php
index 70371e80..7715fc1e 100644
--- a/externallib.php
+++ b/externallib.php
@@ -26,6 +26,8 @@
namespace mod_questionnaire;
+defined('MOODLE_INTERNAL') || die();
+
require_once($CFG->libdir . '/externallib.php');
use external_api;
diff --git a/tests/behat/questionnaire_activity_completion.feature b/tests/behat/questionnaire_activity_completion.feature
index 32e9e856..a9082e39 100644
--- a/tests/behat/questionnaire_activity_completion.feature
+++ b/tests/behat/questionnaire_activity_completion.feature
@@ -108,8 +108,8 @@ Feature: View activity completion information in the questionnaire activity
Then I should see "Are you still in School?"
And I should see "Select one choice"
And I should see "Enter some text"
- And I set the field with xpath "//input[@type='radio' and @id='auto-rb0001']" to "1"
- And I set the field with xpath "//input[@type='radio' and @id='auto-rb0005']" to "1"
+ And I set the field "Yes" to "1"
+ And I set the field "Three" to "1"
And I press "Submit questionnaire"
Then I should see "Thank you for completing this Questionnaire."
And I press "Continue"
diff --git a/tests/csvexport_test.php b/tests/csvexport_test.php
index 8c5e6a9e..bf90dbef 100644
--- a/tests/csvexport_test.php
+++ b/tests/csvexport_test.php
@@ -14,17 +14,21 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
-namespace mod_questionnaire;
-
/**
* Performance test for questionnaire module.
- *
* @package mod_questionnaire
* @group mod_questionnaire
* @author Guy Thomas
* @copyright Copyright (c) 2015 Moodlerooms Inc. (http://www.moodlerooms.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
+
+namespace mod_questionnaire;
+
+/**
+ * Unit tests for questionnaire_csvexport_test.
+ * @group mod_questionnaire
+ */
class csvexport_test extends \advanced_testcase {
public function setUp(): void {
@@ -55,10 +59,9 @@ private function get_csv_text(array $rows) {
}
/**
- * Test case for the csvexport method.
* Tests the CSV export.
*
- * @covers ::csvexport
+ * @covers \questionnaire::generate_csv
*/
public function test_csvexport() {
$this->resetAfterTest();
@@ -90,6 +93,8 @@ public function test_csvexport() {
/**
* Tests the CSV export with identity fields and anonymous questionnaires.
+ *
+ * @covers \questionnaire::generate_csv
*/
public function test_csvexport_identity_fields() {
global $DB;
@@ -148,7 +153,7 @@ private function do_test_csvexport_identity_fields($course, $cm, $user, $roleid,
assign_capability('moodle/site:viewuseridentity', CAP_ALLOW, $roleid, $context);
// Generate CSV output.
- $questionnaire = new questionnaire($course, $cm, $item->id);
+ $questionnaire = new \questionnaire($course, $cm, $item->id);
$output = $questionnaire->generate_csv(0, '', '', 0, 0, 1);
$this->assertNotNull($output);
diff --git a/tests/custom_completion_test.php b/tests/custom_completion_test.php
index 17d61c8c..cb19f612 100644
--- a/tests/custom_completion_test.php
+++ b/tests/custom_completion_test.php
@@ -26,7 +26,6 @@
namespace mod_questionnaire;
-use advanced_testcase;
use cm_info;
use coding_exception;
use mod_questionnaire\completion\custom_completion;
@@ -45,7 +44,7 @@
* @copyright 2022 The Open University
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-class custom_completion_test extends advanced_testcase {
+class custom_completion_test extends \advanced_testcase {
/**
* Data provider for get_state().
@@ -72,7 +71,6 @@ public function get_state_provider(): array {
/**
* Test for get_state().
*
- * @covers \mod_questionnaire\completion\custom_completion::get_state
* @dataProvider get_state_provider
* @param string $rule The custom completion rule.
* @param int $available Whether this rule is available.
@@ -80,6 +78,8 @@ public function get_state_provider(): array {
* @param int|null $status Expected status.
* @param string|null $exception Expected exception.
* @throws coding_exception
+ *
+ * @covers \mod_questionnaire\completion\custom_completion
*/
public function test_get_state(string $rule, int $available, ?bool $submitted, ?int $status, ?string $exception) {
if (!is_null($exception)) {
@@ -116,7 +116,7 @@ public function test_get_state(string $rule, int $available, ?bool $submitted, ?
/**
* Test for get_defined_custom_rules().
*
- * @covers \mod_questionnaire\completion\custom_completion::get_defined_custom_rules
+ * @covers \mod_questionnaire\completion\custom_completion
*/
public function test_get_defined_custom_rules() {
$rules = custom_completion::get_defined_custom_rules();
@@ -127,7 +127,7 @@ public function test_get_defined_custom_rules() {
/**
* Test for get_defined_custom_rule_descriptions().
*
- * @covers \mod_questionnaire\completion\custom_completion::get_custom_rule_descriptions
+ * @covers \mod_questionnaire\completion\custom_completion
*/
public function test_get_custom_rule_descriptions() {
// Get defined custom rules.
@@ -155,7 +155,7 @@ public function test_get_custom_rule_descriptions() {
/**
* Test for is_defined().
*
- * @covers \mod_questionnaire\completion\custom_completion::is_defined
+ * @covers \mod_questionnaire\completion\custom_completion
*/
public function test_is_defined() {
// Build a mock cm_info instance.
@@ -191,10 +191,11 @@ public function get_available_custom_rules_provider(): array {
/**
* Test for get_available_custom_rules().
*
- * @covers \mod_questionnaire\completion\custom_completion::get_available_custom_rules
* @dataProvider get_available_custom_rules_provider
* @param int $status
* @param array $expected
+ *
+ * @covers \mod_questionnaire\completion\custom_completion
*/
public function test_get_available_custom_rules(int $status, array $expected) {
$customdataval = [
diff --git a/tests/generator_test.php b/tests/generator_test.php
index 7f5f86dd..707ecf6a 100644
--- a/tests/generator_test.php
+++ b/tests/generator_test.php
@@ -14,8 +14,6 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
-namespace mod_questionnaire;
-
/**
* PHPUnit questionnaire generator tests
*
@@ -24,11 +22,22 @@
* @author Mike Churchward
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
+
+namespace mod_questionnaire;
+
+/**
+ * Unit tests for questionnaire_generator_testcase.
+ * @group mod_questionnaire
+ */
class generator_test extends \advanced_testcase {
/**
- * Test case for the create_instance function.
+ * Test generator create_instance function.
*
- * @covers \mod_questionnaire_generator::create_instance
+ * @return void
+ * @throws coding_exception
+ * @throws dml_exception
+ *
+ * @covers \mod_questionnaire\generator\
*/
public function test_create_instance() {
global $DB;
@@ -65,9 +74,13 @@ public function test_create_instance() {
}
/**
- * Test case for the create_content function.
+ * Test generator create_content function.
+ *
+ * @return void
+ * @throws coding_exception
+ * @throws dml_exception
*
- * @covers \mod_questionnaire_generator::create_content
+ * @covers \mod_questionnaire\generator\
*/
public function test_create_content() {
global $DB;
diff --git a/tests/lib_test.php b/tests/lib_test.php
index 932e89f9..4f828306 100644
--- a/tests/lib_test.php
+++ b/tests/lib_test.php
@@ -14,29 +14,37 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
-namespace mod_questionnaire;
+/**
+ * PHPUnit questionnaire generator tests
+ *
+ * @package mod_questionnaire
+ * @copyright 2015 Mike Churchward (mike@churchward.ca)
+ * @author Mike Churchward
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
-defined('MOODLE_INTERNAL') || die();
+namespace mod_questionnaire;
use mod_questionnaire\question\question;
+defined('MOODLE_INTERNAL') || die();
+
global $CFG;
require_once($CFG->dirroot.'/mod/questionnaire/lib.php');
require_once($CFG->dirroot.'/mod/questionnaire/classes/question/question.php');
/**
- * PHPUnit questionnaire lib tests
- *
- * @package mod_questionnaire
- * @copyright 2015 Mike Churchward (mike@churchward.ca)
- * @author Mike Churchward
- * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * Unit tests for questionnaire_lib_testcase.
+ * @group mod_questionnaire
*/
class lib_test extends \advanced_testcase {
+
/**
- * Test case for the questionnaire_supports function.
+ * Test for questionnaire_supports.
*
- * @covers ::questionnaire_supports
+ * @return void
+ *
+ * @covers \questionnaire_supports
*/
public function test_questionnaire_supports() {
$this->assertTrue(questionnaire_supports(FEATURE_BACKUP_MOODLE2));
@@ -52,9 +60,11 @@ public function test_questionnaire_supports() {
}
/**
- * Test case for the questionnaire_get_extra_capabilities function.
+ * Test for questionnaire_get_extra_capabilities.
+ *
+ * @return void
*
- * @covers ::questionnaire_get_extra_capabilities
+ * @covers \questionnaire_get_extra_capabilities
*/
public function test_questionnaire_get_extra_capabilities() {
$caps = questionnaire_get_extra_capabilities();
@@ -64,9 +74,12 @@ public function test_questionnaire_get_extra_capabilities() {
}
/**
- * Test case for the questionnaire_add_instance function.
+ * Test for questionnaire_add_instance.
*
- * @covers ::questionnaire_add_instance
+ * @return void
+ * @throws moodle_exception
+ *
+ * @covers \questionnaire_add_instance
*/
public function test_add_instance() {
$this->resetAfterTest();
@@ -99,9 +112,12 @@ public function test_add_instance() {
}
/**
- * Test case for the questionnaire_update_instance function.
+ * Test for questionnaire_update_instance().
+ *
+ * @return void
+ * @throws dml_exception
*
- * @covers ::questionnaire_update_instance
+ * @covers \questionnaire_update_instance
*/
public function test_update_instance() {
global $DB;
@@ -159,9 +175,14 @@ public function test_update_instance() {
}
/**
+ * Test for questionnaire_delete_instance().
+ *
* Need to verify that delete_instance deletes all data associated with a questionnaire.
*
- * @covers ::questionnaire_delete_instance
+ * @return void
+ * @throws dml_exception
+ *
+ * @covers \questionnaire_delete_instance
*/
public function test_delete_instance() {
global $DB;
@@ -195,9 +216,12 @@ public function test_delete_instance() {
}
/**
- * Test case for the questionnaire_user_outline function.
+ * Test for questionnaire_user_outline().
*
- * @covers ::questionnaire_user_outline
+ * @return void
+ * @throws coding_exception
+ *
+ * @covers \questionnaire_user_outline
*/
public function test_questionnaire_user_outline() {
$this->resetAfterTest();
@@ -220,9 +244,12 @@ public function test_questionnaire_user_outline() {
}
/**
- * Test case for the questionnaire_user_complete function.
+ * Test for questionnaire_user_complete().
+ *
+ * @return void
+ * @throws coding_exception
*
- * @covers ::questionnaire_user_complete
+ * @covers \questionnaire_user_complete
*/
public function test_questionnaire_user_complete() {
$this->resetAfterTest();
@@ -237,9 +264,11 @@ public function test_questionnaire_user_complete() {
}
/**
- * Test case for the questionnaire_print_recent_activity function.
+ * Test for questionnaire_print_recent_activity().
*
- * @covers ::questionnaire_print_recent_activity
+ * @return void
+ *
+ * @covers \questionnaire_print_recent_activity
*/
public function test_questionnaire_print_recent_activity() {
$this->resetAfterTest();
@@ -248,9 +277,11 @@ public function test_questionnaire_print_recent_activity() {
}
/**
- * Test case for the questionnaire_grades function.
+ * Test for questionnaire_grades().
+ *
+ * @return void
*
- * @covers ::questionnaire_grades
+ * @covers \questionnaire_grades
*/
public function test_questionnaire_grades() {
$this->resetAfterTest();
@@ -259,9 +290,11 @@ public function test_questionnaire_grades() {
}
/**
- * Test case for the questionnaire_get_user_grades function.
+ * Test for questionnaire_get_user_grades().
*
- * @covers ::questionnaire_get_user_grades
+ * @return void
+ *
+ * @covers \questionnaire_get_user_grades
*/
public function test_questionnaire_get_user_grades() {
$this->resetAfterTest();
@@ -282,9 +315,11 @@ public function test_questionnaire_get_user_grades() {
}
/**
- * Test case for the questionnaire_update_grades function.
+ * Test for questionnaire_update_grades().
+ *
+ * @return void
*
- * @covers ::questionnaire_update_grades
+ * @covers \questionnaire_update_grades
*/
public function test_questionnaire_update_grades() {
// Don't know how to test this yet! It doesn't return anything.
@@ -292,9 +327,11 @@ public function test_questionnaire_update_grades() {
}
/**
- * Test case for the questionnaire_grade_item_update function.
+ * Test for questionnaire_grade_item_update().
+ *
+ * @return void
*
- * @covers ::questionnaire_grade_item_update
+ * @covers \questionnaire_grade_item_update
*/
public function test_questionnaire_grade_item_update() {
$this->resetAfterTest();
diff --git a/tests/questiontypes_test.php b/tests/questiontypes_test.php
index aa0971af..53944a09 100644
--- a/tests/questiontypes_test.php
+++ b/tests/questiontypes_test.php
@@ -14,29 +14,37 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
-namespace mod_questionnaire;
+/**
+ * PHPUnit questionnaire generator tests
+ *
+ * @package mod_questionnaire
+ * @copyright 2015 Mike Churchward (mike@churchward.ca)
+ * @author Mike Churchward
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
-defined('MOODLE_INTERNAL') || die();
+namespace mod_questionnaire;
use mod_questionnaire\question\question;
+defined('MOODLE_INTERNAL') || die();
+
global $CFG;
require_once($CFG->dirroot.'/mod/questionnaire/locallib.php');
require_once($CFG->dirroot . '/mod/questionnaire/classes/question/question.php');
/**
- * PHPUnit questionnaire questiontypes tests
- *
- * @package mod_questionnaire
- * @copyright 2015 Mike Churchward (mike@churchward.ca)
- * @author Mike Churchward
- * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * Unit tests for questionnaire_questiontypes_testcase.
+ * @group mod_questionnaire
*/
class questiontypes_test extends \advanced_testcase {
+
/**
- * Test case for the create_test_question_with_choices function for checkbox questions.
+ * Create a check boxes test question.
+ *
+ * @return void
*
- * @covers ::create_test_question_with_choices
+ * @covers \mod_questionnaire\questiontypes_test::create_test_question
*/
public function test_create_question_checkbox() {
$this->create_test_question_with_choices(QUESCHECK,
@@ -44,27 +52,33 @@ public function test_create_question_checkbox() {
}
/**
- * Test case for the create_test_question function for date questions.
+ * Create a date test question.
*
- * @covers ::create_test_question
+ * @return void
+ *
+ * @covers \mod_questionnaire\questiontypes_test::create_test_question
*/
public function test_create_question_date() {
$this->create_test_question(QUESDATE, '\\mod_questionnaire\\question\\date', array('content' => 'Enter a date'));
}
/**
- * Test case for the create_test_question_with_choices function for dropdown questions.
+ * Create a dropdown box test question.
+ *
+ * @return void
*
- * @covers ::create_test_question_with_choices
+ * @covers \mod_questionnaire\questiontypes_test::create_test_question
*/
public function test_create_question_dropdown() {
$this->create_test_question_with_choices(QUESDROP, '\\mod_questionnaire\\question\\drop', array('content' => 'Select one'));
}
/**
- * Test case for the create_test_question function for essay questions.
+ * Create an essay test question.
*
- * @covers ::create_test_question
+ * @return void
+ *
+ * @covers \mod_questionnaire\questiontypes_test::create_test_question
*/
public function test_create_question_essay() {
$questiondata = array(
@@ -75,9 +89,11 @@ public function test_create_question_essay() {
}
/**
- * Test case for the create_test_question function for sectiontext questions.
+ * Create a sectiontext test question.
+ *
+ * @return void
*
- * @covers ::create_test_question
+ * @covers \mod_questionnaire\questiontypes_test::create_test_question
*/
public function test_create_question_sectiontext() {
$this->create_test_question(QUESSECTIONTEXT, '\\mod_questionnaire\\question\\sectiontext',
@@ -85,9 +101,11 @@ public function test_create_question_sectiontext() {
}
/**
- * Test case for the create_test_question function for numeric questions.
+ * Create a numerical test question.
*
- * @covers ::create_test_question
+ * @return void
+ *
+ * @covers \mod_questionnaire\questiontypes_test::create_test_question
*/
public function test_create_question_numeric() {
$questiondata = array(
@@ -98,9 +116,11 @@ public function test_create_question_numeric() {
}
/**
- * Test case for the create_test_question_with_choices function for radiobuttons questions.
+ * Create a radio test question.
+ *
+ * @return void
*
- * @covers ::create_test_question_with_choices
+ * @covers \mod_questionnaire\questiontypes_test::create_test_question
*/
public function test_create_question_radiobuttons() {
$this->create_test_question_with_choices(QUESRADIO,
@@ -108,18 +128,22 @@ public function test_create_question_radiobuttons() {
}
/**
- * Test case for the create_test_question_with_choices function for ratescale questions.
+ * Create a rate test question.
*
- * @covers ::create_test_question_with_choices
+ * @return void
+ *
+ * @covers \mod_questionnaire\questiontypes_test::create_test_question
*/
public function test_create_question_ratescale() {
$this->create_test_question_with_choices(QUESRATE, '\\mod_questionnaire\\question\\rate', array('content' => 'Rate these'));
}
/**
- * Test case for the create_test_question function for textbox questions.
+ * Create a text test question.
+ *
+ * @return void
*
- * @covers ::create_test_question
+ * @covers \mod_questionnaire\questiontypes_test::create_test_question
*/
public function test_create_question_textbox() {
$questiondata = array(
@@ -130,9 +154,11 @@ public function test_create_question_textbox() {
}
/**
- * Test case for the create_test_question function for slider questions.
+ * Create a slider test question.
*
- * @covers ::create_test_question
+ * @return void
+ *
+ * @covers \mod_questionnaire\questiontypes_test::create_test_question
*/
public function test_create_question_slider() {
$questiondata = array(
@@ -141,14 +167,17 @@ public function test_create_question_slider() {
}
/**
- * Test case for the create_test_question function for yesno questions.
+ * Create a yes/no test question.
+ *
+ * @return void
*
- * @covers ::create_test_question
+ * @covers \mod_questionnaire\questiontypes_test::create_test_question
*/
public function test_create_question_yesno() {
$this->create_test_question(QUESYESNO, '\\mod_questionnaire\\question\\yesno', array('content' => 'Enter yes or no'));
}
+
// General tests to call from specific tests above.
/**
diff --git a/tests/responsetypes_test.php b/tests/responsetypes_test.php
index a4363a09..e10db5ef 100644
--- a/tests/responsetypes_test.php
+++ b/tests/responsetypes_test.php
@@ -14,8 +14,19 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
+/**
+ * PHPUnit questionnaire generator tests
+ *
+ * @package mod_questionnaire
+ * @copyright 2015 Mike Churchward (mike@churchward.ca)
+ * @author Mike Churchward
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
namespace mod_questionnaire;
+use mod_questionnaire\question\question;
+
defined('MOODLE_INTERNAL') || die();
global $CFG;
@@ -25,18 +36,17 @@
require_once($CFG->dirroot . '/mod/questionnaire/classes/question/question.php');
/**
- * PHPUnit questionnaire generator tests
- *
- * @package mod_questionnaire
- * @copyright 2015 Mike Churchward (mike@churchward.ca)
- * @author Mike Churchward
- * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * Unit tests for questionnaire_responsetypes_testcase.
+ * @group mod_questionnaire
*/
class responsetypes_test extends \advanced_testcase {
/**
- * Test case for the create_response_boolean function.
+ * Test responses in a yes/no question.
+ *
+ * @return void
+ * @throws dml_exception
*
- * @covers \mod_questionnaire_generator::create_question_response
+ * @covers \mod_questionnaire\question\yesno
*/
public function test_create_response_boolean() {
global $DB;
@@ -65,9 +75,12 @@ public function test_create_response_boolean() {
}
/**
- * Test case for the create_response_text function.
+ * Test responses in a essay question.
+ *
+ * @return void
+ * @throws dml_exception
*
- * @covers \mod_questionnaire_generator::create_question_response
+ * @covers \mod_questionnaire\question\essay
*/
public function test_create_response_text() {
global $DB;
@@ -97,9 +110,12 @@ public function test_create_response_text() {
}
/**
- * Test case for the create_response_slider function.
+ * Test responses in a slider question.
*
- * @covers \mod_questionnaire_generator::create_question_response
+ * @return void
+ * @throws dml_exception
+ *
+ * @covers \mod_questionnaire\question\slider
*/
public function test_create_response_slider() {
global $DB;
@@ -129,9 +145,12 @@ public function test_create_response_slider() {
}
/**
- * Test case for the create_response_date function.
+ * Test responses in a date question.
+ *
+ * @return void
+ * @throws dml_exception
*
- * @covers \mod_questionnaire_generator::create_question_response
+ * @covers \mod_questionnaire\question\date
*/
public function test_create_response_date() {
global $DB;
@@ -162,9 +181,12 @@ public function test_create_response_date() {
}
/**
- * Test case for the create_response_single function.
+ * Test responses in a single choice radio question.
+ *
+ * @return void
+ * @throws dml_exception
*
- * @covers \mod_questionnaire_generator::create_question_response
+ * @covers \mod_questionnaire\question\radio
*/
public function test_create_response_single() {
global $DB;
@@ -236,9 +258,12 @@ public function test_create_response_single() {
}
/**
- * Test case for the create_response_multiple function.
+ * Test responses in a multiple choices question.
*
- * @covers \mod_questionnaire_generator::create_question_response
+ * @return void
+ * @throws dml_exception
+ *
+ * @covers \mod_questionnaire\question\rate
*/
public function test_create_response_multiple() {
global $DB;
@@ -296,9 +321,12 @@ public function test_create_response_multiple() {
}
/**
- * Test case for the create_response_rank function.
+ * Test response's ranks in a rate question.
+ *
+ * @return void
+ * @throws dml_exception
*
- * @covers \mod_questionnaire_generator::create_question_response
+ * @covers \mod_questionnaire\question\rate
*/
public function test_create_response_rank() {
global $DB;
@@ -365,7 +393,7 @@ public function create_test_questionnaire($qtype, $questiondata = [], $choicedat
$questiondata['content'] = isset($questiondata['content']) ? $questiondata['content'] : 'Test content';
$generator->create_question($questionnaire, $questiondata, $choicedata);
- $questionnaire = new questionnaire( $course, $cm, $questionnaire->id, null, true);
+ $questionnaire = new \questionnaire( $course, $cm, $questionnaire->id, null, true);
return $questionnaire;
}