moodle/mod/assign/tests/base_test.php
Eloy Lafuente (stronk7) d9f7fe9c3f
MDL-77599 coding-style: Replace forbidden @const tags by @var
@const is not a valid phpdoc tag and @var should be used to
document both classes properties and constants (no matter how
weird that may sound, heh).

Link to (draft right now) PHP-FIG:

https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc-tags.md#518-var

So, with this commit we are just replacing all uses by the correct
@var one. Note that the type is entirely optional, in fact I think
that there isn't much need of it for constants because it's obvious
for both humans and machines which the type is. But, as far as it's
also correct to specify it, we haven't modified that detail.

The only detail modified are the cases where the constant name was
specified in the phpdoc, that's not needed, hence, the names have
been removed from there when present (a couple of cases).
2023-07-03 15:58:16 +02:00

220 lines
9.2 KiB
PHP

<?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/>.
namespace mod_assign;
use mod_assign_testable_assign;
defined('MOODLE_INTERNAL') || die();
global $CFG;
require_once($CFG->dirroot . '/mod/assign/locallib.php');
require_once(__DIR__ . '/fixtures/testable_assign.php');
/**
* Unit tests for (some of) mod/assign/locallib.php.
*
* @package mod_assign
* @category test
* @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class base_test extends \advanced_testcase {
/** @var Default number of students to create */
const DEFAULT_STUDENT_COUNT = 3;
/** @var Default number of teachers to create */
const DEFAULT_TEACHER_COUNT = 2;
/** @var Default number of editing teachers to create */
const DEFAULT_EDITING_TEACHER_COUNT = 2;
/** @var Optional extra number of students to create */
const EXTRA_STUDENT_COUNT = 40;
/** @var Optional number of suspended students */
const EXTRA_SUSPENDED_COUNT = 10;
/** @var Optional extra number of teachers to create */
const EXTRA_TEACHER_COUNT = 5;
/** @var Optional extra number of editing teachers to create */
const EXTRA_EDITING_TEACHER_COUNT = 5;
/** @var Number of groups to create */
const GROUP_COUNT = 6;
/** @var \stdClass $course New course created to hold the assignments */
protected $course = null;
/** @var array $teachers List of DEFAULT_TEACHER_COUNT teachers in the course*/
protected $teachers = null;
/** @var array $editingteachers List of DEFAULT_EDITING_TEACHER_COUNT editing teachers in the course */
protected $editingteachers = null;
/** @var array $students List of DEFAULT_STUDENT_COUNT students in the course*/
protected $students = null;
/** @var array $extrateachers List of EXTRA_TEACHER_COUNT teachers in the course*/
protected $extrateachers = null;
/** @var array $extraeditingteachers List of EXTRA_EDITING_TEACHER_COUNT editing teachers in the course*/
protected $extraeditingteachers = null;
/** @var array $extrastudents List of EXTRA_STUDENT_COUNT students in the course*/
protected $extrastudents = null;
/** @var array $extrasuspendedstudents List of EXTRA_SUSPENDED_COUNT students in the course*/
protected $extrasuspendedstudents = null;
/** @var array $groups List of 10 groups in the course */
protected $groups = null;
/**
* Setup function - we will create a course and add an assign instance to it.
*/
protected function setUp(): void {
global $DB;
$this->resetAfterTest(true);
$this->course = $this->getDataGenerator()->create_course(array('enablecompletion' => 1));
$this->teachers = array();
for ($i = 0; $i < self::DEFAULT_TEACHER_COUNT; $i++) {
array_push($this->teachers, $this->getDataGenerator()->create_user());
}
$this->editingteachers = array();
for ($i = 0; $i < self::DEFAULT_EDITING_TEACHER_COUNT; $i++) {
array_push($this->editingteachers, $this->getDataGenerator()->create_user());
}
$this->students = array();
for ($i = 0; $i < self::DEFAULT_STUDENT_COUNT; $i++) {
array_push($this->students, $this->getDataGenerator()->create_user());
}
$this->groups = array();
for ($i = 0; $i < self::GROUP_COUNT; $i++) {
array_push($this->groups, $this->getDataGenerator()->create_group(array('courseid'=>$this->course->id)));
}
$teacherrole = $DB->get_record('role', array('shortname'=>'teacher'));
foreach ($this->teachers as $i => $teacher) {
$this->getDataGenerator()->enrol_user($teacher->id,
$this->course->id,
$teacherrole->id);
groups_add_member($this->groups[$i % self::GROUP_COUNT], $teacher);
}
$editingteacherrole = $DB->get_record('role', array('shortname'=>'editingteacher'));
foreach ($this->editingteachers as $i => $editingteacher) {
$this->getDataGenerator()->enrol_user($editingteacher->id,
$this->course->id,
$editingteacherrole->id);
groups_add_member($this->groups[$i % self::GROUP_COUNT], $editingteacher);
}
$studentrole = $DB->get_record('role', array('shortname'=>'student'));
foreach ($this->students as $i => $student) {
$this->getDataGenerator()->enrol_user($student->id,
$this->course->id,
$studentrole->id);
groups_add_member($this->groups[$i % self::GROUP_COUNT], $student);
}
}
/*
* For tests that make sense to use alot of data, create extra students/teachers.
*/
protected function create_extra_users() {
global $DB;
$this->extrateachers = array();
for ($i = 0; $i < self::EXTRA_TEACHER_COUNT; $i++) {
array_push($this->extrateachers, $this->getDataGenerator()->create_user());
}
$this->extraeditingteachers = array();
for ($i = 0; $i < self::EXTRA_EDITING_TEACHER_COUNT; $i++) {
array_push($this->extraeditingteachers, $this->getDataGenerator()->create_user());
}
$this->extrastudents = array();
for ($i = 0; $i < self::EXTRA_STUDENT_COUNT; $i++) {
array_push($this->extrastudents, $this->getDataGenerator()->create_user());
}
$this->extrasuspendedstudents = array();
for ($i = 0; $i < self::EXTRA_SUSPENDED_COUNT; $i++) {
array_push($this->extrasuspendedstudents, $this->getDataGenerator()->create_user());
}
$teacherrole = $DB->get_record('role', array('shortname'=>'teacher'));
foreach ($this->extrateachers as $i => $teacher) {
$this->getDataGenerator()->enrol_user($teacher->id,
$this->course->id,
$teacherrole->id);
groups_add_member($this->groups[$i % self::GROUP_COUNT], $teacher);
}
$editingteacherrole = $DB->get_record('role', array('shortname'=>'editingteacher'));
foreach ($this->extraeditingteachers as $i => $editingteacher) {
$this->getDataGenerator()->enrol_user($editingteacher->id,
$this->course->id,
$editingteacherrole->id);
groups_add_member($this->groups[$i % self::GROUP_COUNT], $editingteacher);
}
$studentrole = $DB->get_record('role', array('shortname'=>'student'));
foreach ($this->extrastudents as $i => $student) {
$this->getDataGenerator()->enrol_user($student->id,
$this->course->id,
$studentrole->id);
if ($i < (self::EXTRA_STUDENT_COUNT / 2)) {
groups_add_member($this->groups[$i % self::GROUP_COUNT], $student);
}
}
foreach ($this->extrasuspendedstudents as $i => $suspendedstudent) {
$this->getDataGenerator()->enrol_user($suspendedstudent->id,
$this->course->id,
$studentrole->id, 'manual', 0, 0, ENROL_USER_SUSPENDED);
if ($i < (self::EXTRA_SUSPENDED_COUNT / 2)) {
groups_add_member($this->groups[$i % self::GROUP_COUNT], $suspendedstudent);
}
}
}
/**
* Convenience function to create a testable instance of an assignment.
*
* @param array $params Array of parameters to pass to the generator
* @return testable_assign Testable wrapper around the assign class.
*/
protected function create_instance($params=array()) {
$generator = $this->getDataGenerator()->get_plugin_generator('mod_assign');
if (!isset($params['course'])) {
$params['course'] = $this->course->id;
}
$instance = $generator->create_instance($params);
$cm = get_coursemodule_from_instance('assign', $instance->id);
$context = \context_module::instance($cm->id);
return new mod_assign_testable_assign($context, $cm, $this->course);
}
public function test_create_instance() {
$this->assertNotEmpty($this->create_instance());
}
}
class_alias('mod_assign_testable_assign', 'testable_assign');