From f70bfb848bd0a595285bfc83c36c6a54d11e35a4 Mon Sep 17 00:00:00 2001 From: Frederic Massart Date: Fri, 7 Sep 2012 09:34:39 +0800 Subject: [PATCH 1/2] MDL-35301 Unit Tests: Basic test for create_course() --- course/tests/courselib_test.php | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/course/tests/courselib_test.php b/course/tests/courselib_test.php index 42b8057ed935f..0004f7d70cf48 100644 --- a/course/tests/courselib_test.php +++ b/course/tests/courselib_test.php @@ -25,9 +25,43 @@ defined('MOODLE_INTERNAL') || die(); +global $CFG; +require_once($CFG->dirroot.'/course/lib.php'); class courselib_testcase extends advanced_testcase { + public function test_create_course() { + global $DB; + $this->resetAfterTest(true); + $defaultcategory = $DB->get_field_select('course_categories', "MIN(id)", "parent=0"); + + $course = new stdClass(); + $course->fullname = 'Apu loves Unit Təsts'; + $course->shortname = 'Spread the lŭve'; + $course->idnumber = '123'; + $course->summary = 'Awesome!'; + $course->summaryformat = FORMAT_PLAIN; + $course->format = 'topics'; + $course->newsitems = 0; + $course->numsections = 5; + $course->category = $defaultcategory; + + $created = create_course($course); + $context = context_course::instance($created->id); + + // Compare original and created. + $original = (array) $course; + $this->assertEquals($original, array_intersect_key((array) $created, $original)); + + // Ensure default section is created. + $sectioncreated = $DB->record_exists('course_sections', array('course' => $created->id, 'section' => 0)); + $this->assertTrue($sectioncreated); + + // Ensure blocks have been associated to the course. + $blockcount = $DB->count_records('block_instances', array('parentcontextid' => $context->id)); + $this->assertGreaterThan(0, $blockcount); + } + public function test_reorder_sections() { global $DB; $this->resetAfterTest(true); From 19ffa630a603c8e1cbd2bede39a89de387a6ba8c Mon Sep 17 00:00:00 2001 From: Frederic Massart Date: Fri, 7 Sep 2012 11:12:56 +0800 Subject: [PATCH 2/2] MDL-35301 Unit Tests: Test cases for course requests --- course/tests/courserequest_test.php | 145 ++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 course/tests/courserequest_test.php diff --git a/course/tests/courserequest_test.php b/course/tests/courserequest_test.php new file mode 100644 index 0000000000000..a4c6f6d23704e --- /dev/null +++ b/course/tests/courserequest_test.php @@ -0,0 +1,145 @@ +. + +/** + * Course request related unit tests + * + * @package core + * @category phpunit + * @copyright 2012 Frédéric Massart + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; +require_once($CFG->dirroot.'/course/lib.php'); + +class courserequest_testcase extends advanced_testcase { + + public function test_create_request() { + global $DB, $USER; + $this->resetAfterTest(true); + + $defaultcategory = $DB->get_field_select('course_categories', "MIN(id)", "parent=0"); + set_config('enablecourserequests', 1); + set_config('requestcategoryselection', 0); + set_config('defaultrequestcategory', $defaultcategory); + + // Create some categories. + $cat1 = $this->getDataGenerator()->create_category(); + $cat2 = $this->getDataGenerator()->create_category(); + $cat3 = $this->getDataGenerator()->create_category(); + + // Basic course request. + $data = new stdClass(); + $data->fullname = 'Həllo World!'; + $data->shortname = 'Hi th€re!'; + $data->summary_editor['text'] = 'Lorem Ipsum ©'; + $data->summary_editor['format'] = FORMAT_HTML; + $data->reason = 'Because PHP Unit is cool.'; + $cr = course_request::create($data); + + $this->assertEquals($data->fullname, $cr->fullname); + $this->assertEquals($data->shortname, $cr->shortname); + $this->assertEquals($data->summary_editor['text'], $cr->summary); + $this->assertEquals($data->summary_editor['format'], $cr->summaryformat); + $this->assertEquals($data->reason, $cr->reason); + $this->assertEquals($USER->id, $cr->requester); + $this->assertEquals($defaultcategory, $cr->category); + + // Request with category but category selection not allowed. + set_config('defaultrequestcategory', $cat2->id); + $data->category = $cat1->id; + $cr = course_request::create($data); + $this->assertEquals($cat2->id, $cr->category); + + // Request with category different than default and category selection allowed. + set_config('defaultrequestcategory', $cat3->id); + set_config('requestcategoryselection', 1); + $data->category = $cat1->id; + $cr = course_request::create($data); + $this->assertEquals($cat1->id, $cr->category); + } + + public function test_approve_request() { + global $DB; + $this->resetAfterTest(true); + $this->preventResetByRollback(); + + $this->setAdminUser(); + $defaultcategory = $DB->get_field_select('course_categories', "MIN(id)", "parent=0"); + set_config('enablecourserequests', 1); + set_config('requestcategoryselection', 0); + set_config('defaultrequestcategory', $defaultcategory); + + // Create some categories. + $cat1 = $this->getDataGenerator()->create_category(); + $cat2 = $this->getDataGenerator()->create_category(); + + $data = new stdClass(); + $data->fullname = 'Həllo World!'; + $data->shortname = 'Hi th€re!'; + $data->summary_editor['text'] = 'Lorem Ipsum ©'; + $data->summary_editor['format'] = FORMAT_HTML; + $data->reason = 'Because PHP Unit is cool.'; + + // Test without category. + $cr = course_request::create($data); + $id = $cr->approve(); + $course = $DB->get_record('course', array('id' => $id)); + $this->assertEquals($data->fullname, $course->fullname); + $this->assertEquals($data->shortname, $course->shortname); + $this->assertEquals($data->summary_editor['text'], $course->summary); + $this->assertEquals($data->summary_editor['format'], $course->summaryformat); + $this->assertEquals(1, $course->requested); + $this->assertEquals($defaultcategory, $course->category); + + // Test with category. + set_config('requestcategoryselection', 1); + set_config('defaultrequestcategory', $cat2->id); + $data->shortname .= ' 2nd'; + $data->category = $cat1->id; + $cr = course_request::create($data); + $id = $cr->approve(); + $course = $DB->get_record('course', array('id' => $id)); + $this->assertEquals($data->category, $course->category); + } + + public function test_reject_request() { + global $DB; + $this->resetAfterTest(true); + $this->preventResetByRollback(); + $this->setAdminUser(); + set_config('enablecourserequests', 1); + set_config('requestcategoryselection', 0); + set_config('defaultrequestcategory', $DB->get_field_select('course_categories', "MIN(id)", "parent=0")); + + $data = new stdClass(); + $data->fullname = 'Həllo World!'; + $data->shortname = 'Hi th€re!'; + $data->summary_editor['text'] = 'Lorem Ipsum ©'; + $data->summary_editor['format'] = FORMAT_HTML; + $data->reason = 'Because PHP Unit is cool.'; + + $cr = course_request::create($data); + $this->assertTrue($DB->record_exists('course_request', array('id' => $cr->id))); + $cr->reject('Sorry!'); + $this->assertFalse($DB->record_exists('course_request', array('id' => $cr->id))); + } + +}