$this->assertEquals($courseinfo->newsitems, $course2['newsitems']);
$this->assertEquals($courseinfo->startdate, $course2['startdate']);
$this->assertEquals($courseinfo->enddate, $course2['enddate']);
- $this->assertEquals($courseinfo->numsections, $course2['numsections']);
+ $this->assertEquals(course_get_format($createdcourse['id'])->get_last_section_number(), $course2['numsections']);
$this->assertEquals($courseinfo->maxbytes, $course2['maxbytes']);
$this->assertEquals($courseinfo->showreports, $course2['showreports']);
$this->assertEquals($courseinfo->visible, $course2['visible']);
$this->assertEquals($courseinfo->category, $course3['categoryid']);
$this->assertEquals($courseinfo->format, $course3['format']);
$this->assertEquals($courseinfo->hiddensections, $course3options['hiddensections']);
- $this->assertEquals($courseinfo->numsections, $course3options['numsections']);
+ $this->assertEquals(course_get_format($createdcourse['id'])->get_last_section_number(),
+ $course3options['numsections']);
$this->assertEquals($courseinfo->coursedisplay, $course3options['coursedisplay']);
} else {
throw new moodle_exception('Unexpected shortname');
$this->assertEquals($course['newsitems'], $dbcourse->newsitems);
$this->assertEquals($course['startdate'], $dbcourse->startdate);
$this->assertEquals($course['enddate'], $dbcourse->enddate);
- $this->assertEquals($course['numsections'], $dbcourse->numsections);
+ $this->assertEquals($course['numsections'], course_get_format($dbcourse)->get_last_section_number());
$this->assertEquals($course['maxbytes'], $dbcourse->maxbytes);
$this->assertEquals($course['showreports'], $dbcourse->showreports);
$this->assertEquals($course['visible'], $dbcourse->visible);
$this->assertEquals($course['enablecompletion'], $dbcourse->enablecompletion);
if ($dbcourse->format === 'topics') {
$this->assertEquals($course['courseformatoptions'], array(
- array('name' => 'numsections', 'value' => $dbcourse->numsections),
array('name' => 'hiddensections', 'value' => $dbcourse->hiddensections),
array('name' => 'coursedisplay', 'value' => $dbcourse->coursedisplay),
));
$this->assertEquals($DB->count_records('course'), count($courses));
}
+ /**
+ * Test get_courses without capability
+ */
+ public function test_get_courses_without_capability() {
+ $this->resetAfterTest(true);
+
+ $course1 = $this->getDataGenerator()->create_course();
+ $this->setUser($this->getDataGenerator()->create_user());
+
+ // No permissions are required to get the site course.
+ $courses = core_course_external::get_courses(array('ids' => [SITEID]));
+ $courses = external_api::clean_returnvalue(core_course_external::get_courses_returns(), $courses);
+
+ $this->assertEquals(1, count($courses));
+ $this->assertEquals('PHPUnit test site', $courses[0]['fullname']);
+ $this->assertEquals('site', $courses[0]['format']);
+
+ // Requesting course without being enrolled or capability to view it will throw an exception.
+ try {
+ core_course_external::get_courses(array('ids' => [$course1->id]));
+ $this->fail('Exception expected');
+ } catch (moodle_exception $e) {
+ $this->assertEquals(1, preg_match('/Course or activity not accessible. \(Not enrolled\)/', $e->getMessage()));
+ }
+ }
+
/**
* Test search_courses
*/
*/
private function prepare_get_course_contents_test() {
global $DB;
- $course = self::getDataGenerator()->create_course();
+ $course = self::getDataGenerator()->create_course(['numsections' => 2]);
$forumdescription = 'This is the forum description';
$forum = $this->getDataGenerator()->create_module('forum',
array('course' => $course->id, 'intro' => $forumdescription),
// We need to execute the return values cleaning process to simulate the web service server.
$sections = external_api::clean_returnvalue(core_course_external::get_course_contents_returns(), $sections);
- $this->assertCount(2, $sections);
+ $this->assertCount(3, $sections);
$this->assertCount(1, $sections[0]['modules']);
$this->assertEquals($forumcm->id, $sections[0]['modules'][0]["id"]);
}
// We need to execute the return values cleaning process to simulate the web service server.
$sections = external_api::clean_returnvalue(core_course_external::get_course_contents_returns(), $sections);
- $this->assertCount(2, $sections);
+ $this->assertCount(3, $sections);
$this->assertCount(1, $sections[0]['modules']);
$this->assertEquals($forumcm->id, $sections[0]['modules'][0]["id"]);
}
// We need to execute the return values cleaning process to simulate the web service server.
$sections = external_api::clean_returnvalue(core_course_external::get_course_contents_returns(), $sections);
- $this->assertCount(2, $sections);
+ $this->assertCount(3, $sections);
$this->assertCount(1, $sections[0]['modules']);
$this->assertEquals("page", $sections[0]['modules'][0]["modname"]);
$this->assertEquals($pagecm->instance, $sections[0]['modules'][0]["instance"]);
$course2['newsitems'] = 3;
$course2['startdate'] = 1420092000; // 01/01/2015.
$course2['enddate'] = 1422669600; // 01/31/2015.
- $course2['numsections'] = 4;
$course2['maxbytes'] = 100000;
$course2['showreports'] = 1;
$course2['visible'] = 0;
$this->assertEquals($course2['newsitems'], $courseinfo->newsitems);
$this->assertEquals($course2['startdate'], $courseinfo->startdate);
$this->assertEquals($course2['enddate'], $courseinfo->enddate);
- $this->assertEquals($course2['numsections'], $courseinfo->numsections);
$this->assertEquals($course2['maxbytes'], $courseinfo->maxbytes);
$this->assertEquals($course2['showreports'], $courseinfo->showreports);
$this->assertEquals($course2['visible'], $courseinfo->visible);
$this->assertEquals($course1['categoryid'], $courseinfo->category);
$this->assertEquals(FORMAT_MOODLE, $courseinfo->summaryformat);
$this->assertEquals('topics', $courseinfo->format);
- $this->assertEquals(5, $courseinfo->numsections);
+ $this->assertEquals(5, course_get_format($course['id'])->get_last_section_number());
$this->assertEquals(0, $courseinfo->newsitems);
$this->assertEquals(FORMAT_MOODLE, $courseinfo->summaryformat);
} else {
$courses = array($course1->id , $course2->id);
$result = core_course_external::get_activities_overview($courses);
+ $this->assertDebuggingCalledCount(8);
$result = external_api::clean_returnvalue(core_course_external::get_activities_overview_returns(), $result);
// There should be one entry for course1, and no others.