source: moodle/trunk/fuentes/course/tests/courserequest_test.php @ 1331

Last change on this file since 1331 was 1331, checked in by jrpelegrina, 3 years ago

Updated to moodle 3.0.3

File size: 6.4 KB
Line 
1<?php
2
3// This file is part of Moodle - http://moodle.org/
4//
5// Moodle is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// Moodle is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17
18/**
19 * Course request related unit tests
20 *
21 * @package    core
22 * @category   phpunit
23 * @copyright  2012 Frédéric Massart
24 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25 */
26
27defined('MOODLE_INTERNAL') || die();
28
29global $CFG;
30require_once($CFG->dirroot.'/course/lib.php');
31
32class core_course_courserequest_testcase extends advanced_testcase {
33
34    public function test_create_request() {
35        global $DB, $USER;
36        $this->resetAfterTest(true);
37
38        $defaultcategory = $DB->get_field_select('course_categories', "MIN(id)", "parent=0");
39        set_config('enablecourserequests', 1);
40        set_config('requestcategoryselection', 0);
41        set_config('defaultrequestcategory', $defaultcategory);
42
43        // Create some categories.
44        $cat1 = $this->getDataGenerator()->create_category();
45        $cat2 = $this->getDataGenerator()->create_category();
46        $cat3 = $this->getDataGenerator()->create_category();
47
48        // Basic course request.
49        $data = new stdClass();
50        $data->fullname = 'Həllo World!';
51        $data->shortname = 'Hi th€re!';
52        $data->summary_editor['text'] = 'Lorem Ipsum ©';
53        $data->summary_editor['format'] = FORMAT_HTML;
54        $data->reason = 'Because PHP Unit is cool.';
55        $cr = course_request::create($data);
56
57        $this->assertEquals($data->fullname, $cr->fullname);
58        $this->assertEquals($data->shortname, $cr->shortname);
59        $this->assertEquals($data->summary_editor['text'], $cr->summary);
60        $this->assertEquals($data->summary_editor['format'], $cr->summaryformat);
61        $this->assertEquals($data->reason, $cr->reason);
62        $this->assertEquals($USER->id, $cr->requester);
63        $this->assertEquals($defaultcategory, $cr->category);
64
65        // Request with category but category selection not allowed.
66        set_config('defaultrequestcategory', $cat2->id);
67        $data->category = $cat1->id;
68        $cr = course_request::create($data);
69        $this->assertEquals($cat2->id, $cr->category);
70
71        // Request with category different than default and category selection allowed.
72        set_config('defaultrequestcategory', $cat3->id);
73        set_config('requestcategoryselection', 1);
74        $data->category = $cat1->id;
75        $cr = course_request::create($data);
76        $this->assertEquals($cat1->id, $cr->category);
77    }
78
79    public function test_approve_request() {
80        global $DB;
81        $this->resetAfterTest(true);
82        $this->preventResetByRollback();
83
84        $defaultcategory = $DB->get_field_select('course_categories', "MIN(id)", "parent=0");
85        set_config('enablecourserequests', 1);
86        set_config('requestcategoryselection', 0);
87        set_config('defaultrequestcategory', $defaultcategory);
88
89        // Create some categories.
90        $cat1 = $this->getDataGenerator()->create_category();
91        $cat2 = $this->getDataGenerator()->create_category();
92
93        $requester = $this->getDataGenerator()->create_user();
94
95        $data = new stdClass();
96        $data->fullname = 'Həllo World!';
97        $data->shortname = 'Hi th€re!';
98        $data->summary_editor['text'] = 'Lorem Ipsum ©';
99        $data->summary_editor['format'] = FORMAT_HTML;
100        $data->reason = 'Because PHP Unit is cool.';
101
102        // Test without category.
103        $this->setUser($requester);
104        $cr = course_request::create($data);
105        $this->setAdminUser();
106        $sink = $this->redirectMessages();
107        $id = $cr->approve();
108        $this->assertCount(1, $sink->get_messages());
109        $sink->close();
110        $course = $DB->get_record('course', array('id' => $id));
111        $this->assertEquals($data->fullname, $course->fullname);
112        $this->assertEquals($data->shortname, $course->shortname);
113        $this->assertEquals($data->summary_editor['text'], $course->summary);
114        $this->assertEquals($data->summary_editor['format'], $course->summaryformat);
115        $this->assertEquals(1, $course->requested);
116        $this->assertEquals($defaultcategory, $course->category);
117
118        // Test with category.
119        set_config('requestcategoryselection', 1);
120        set_config('defaultrequestcategory', $cat2->id);
121        $data->shortname .= ' 2nd';
122        $data->category = $cat1->id;
123        $this->setUser($requester);
124        $cr = course_request::create($data);
125        $this->setAdminUser();
126        $sink = $this->redirectMessages();
127        $id = $cr->approve();
128        $this->assertCount(1, $sink->get_messages());
129        $sink->close();
130        $course = $DB->get_record('course', array('id' => $id));
131        $this->assertEquals($data->category, $course->category);
132    }
133
134    public function test_reject_request() {
135        global $DB;
136        $this->resetAfterTest(true);
137        $this->preventResetByRollback();
138
139        $this->setAdminUser();
140        set_config('enablecourserequests', 1);
141        set_config('requestcategoryselection', 0);
142        set_config('defaultrequestcategory', $DB->get_field_select('course_categories', "MIN(id)", "parent=0"));
143
144        $requester = $this->getDataGenerator()->create_user();
145
146        $data = new stdClass();
147        $data->fullname = 'Həllo World!';
148        $data->shortname = 'Hi th€re!';
149        $data->summary_editor['text'] = 'Lorem Ipsum ©';
150        $data->summary_editor['format'] = FORMAT_HTML;
151        $data->reason = 'Because PHP Unit is cool.';
152
153        $this->setUser($requester);
154        $cr = course_request::create($data);
155        $this->assertTrue($DB->record_exists('course_request', array('id' => $cr->id)));
156
157        $this->setAdminUser();
158        $sink = $this->redirectMessages();
159        $cr->reject('Sorry!');
160        $this->assertFalse($DB->record_exists('course_request', array('id' => $cr->id)));
161        $this->assertCount(1, $sink->get_messages());
162        $sink->close();
163    }
164}
Note: See TracBrowser for help on using the repository browser.