Skip to content

Commit

Permalink
MDL-49330 core_notes: Unit tests for get_course_notes
Browse files Browse the repository at this point in the history
  • Loading branch information
Costantino Cito authored and jleyva committed Apr 1, 2015
1 parent 9857381 commit 12068d6
Show file tree
Hide file tree
Showing 2 changed files with 118 additions and 1 deletion.
117 changes: 117 additions & 0 deletions notes/tests/externallib_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -240,4 +240,121 @@ public function test_update_notes() {
$notes2 = array($note2);
$updatednotes = core_notes_external::update_notes($notes2);
}

/**
* Test get_course_notes
*/
public function test_get_course_notes() {
global $DB, $CFG;

$this->resetAfterTest(true);
$CFG->enablenotes = true;

// Take role definitions.
$studentrole = $DB->get_record('role', array('shortname' => 'student'));
$teacherrole = $DB->get_record('role', array('shortname' => 'teacher'));

// Create students and teachers.
$student1 = $this->getDataGenerator()->create_user();
$student2 = $this->getDataGenerator()->create_user();
$teacher1 = $this->getDataGenerator()->create_user();
$teacher2 = $this->getDataGenerator()->create_user();
$course1 = $this->getDataGenerator()->create_course();
$course2 = $this->getDataGenerator()->create_course();

// Enroll students and teachers to COURSE-1.
$this->getDataGenerator()->enrol_user($student1->id, $course1->id, $studentrole->id);
$this->getDataGenerator()->enrol_user($student2->id, $course1->id, $studentrole->id);
$this->getDataGenerator()->enrol_user($teacher1->id, $course1->id, $teacherrole->id);
$this->getDataGenerator()->enrol_user($teacher2->id, $course1->id, $teacherrole->id);
// Enroll students and teachers to COURSE-2 (teacher1 is not enrolled in Course 2).
$this->getDataGenerator()->enrol_user($student1->id, $course2->id, $studentrole->id);
$this->getDataGenerator()->enrol_user($student2->id, $course2->id, $studentrole->id);

$this->getDataGenerator()->enrol_user($teacher2->id, $course2->id, $teacherrole->id);

// Generate notes.
$gen = $this->getDataGenerator()->get_plugin_generator('core_notes');

$this->setUser($teacher1);

// NoteA1: on student1 (Course1) by Teacher1.
$params = array('courseid' => $course1->id, 'userid' => $student1->id, 'publishstate' => NOTES_STATE_PUBLIC,
'usermodified' => $teacher1->id);
$notea1 = $gen->create_instance($params);
// NoteA2: on student1 (Course1) by Teacher1.
$params = array('courseid' => $course1->id, 'userid' => $student1->id, 'publishstate' => NOTES_STATE_PUBLIC,
'usermodified' => $teacher1->id);
$notea2 = $gen->create_instance($params);
// NoteS1: on student1 SITE-LEVEL by teacher1.
$params = array('courseid' => $course1->id, 'userid' => $student1->id, 'publishstate' => NOTES_STATE_SITE,
'usermodified' => $teacher1->id);
$notes1 = $gen->create_instance($params);
// NoteP1: on student1 PERSONAL by teacher1.
$params = array('courseid' => $course1->id, 'userid' => $student1->id, 'publishstate' => NOTES_STATE_DRAFT,
'usermodified' => $teacher1->id);
$notep1 = $gen->create_instance($params);
// NoteB1: on student1 (Course2) by teacher1.
$params = array('courseid' => $course2->id, 'userid' => $student1->id, 'publishstate' => NOTES_STATE_PUBLIC,
'usermodified' => $teacher1->id);
$noteb1 = $gen->create_instance($params);

// Retrieve notes, normal case.
$result = core_notes_external::get_course_notes($course1->id, $student1->id);
$result = external_api::clean_returnvalue(core_notes_external::get_course_notes_returns(), $result);
$this->assertEquals($notes1->id, $result['sitenotes'][0]['id']);
$this->assertEquals($notea1->id, $result['coursenotes'][0]['id']);
$this->assertEquals($notep1->id, $result['personalnotes'][0]['id']);

// Try to get notes from a course the user is not enrolled.
try {
$result = core_notes_external::get_course_notes($course2->id, $student1->id);
$this->fail('the user is not enrolled in the course');
} catch (require_login_exception $e) {
$this->assertEquals('requireloginerror', $e->errorcode);
}

$result = core_notes_external::get_course_notes(0, $student1->id);
$result = external_api::clean_returnvalue(core_notes_external::get_course_notes_returns(), $result);
$this->assertEmpty($result['sitenotes']);
$this->assertEquals($notea1->id, $result['coursenotes'][0]['id']);
$this->assertEquals($notea2->id, $result['coursenotes'][1]['id']);
$this->assertCount(2, $result['coursenotes']);

$this->setAdminUser();
$result = core_notes_external::get_course_notes(0, $student1->id);
$result = external_api::clean_returnvalue(core_notes_external::get_course_notes_returns(), $result);
$this->assertEquals($notes1->id, $result['sitenotes'][0]['id']);
$this->assertCount(1, $result['sitenotes']);

$this->setUser($teacher1);
$result = core_notes_external::get_course_notes(0, 0);
$result = external_api::clean_returnvalue(core_notes_external::get_course_notes_returns(), $result);
$this->assertEmpty($result['sitenotes']);
$this->assertEmpty($result['coursenotes']);
$this->assertEmpty($result['personalnotes']);

$this->setUser($teacher2);
$result = core_notes_external::get_course_notes($course1->id, $student1->id);
$result = external_api::clean_returnvalue(core_notes_external::get_course_notes_returns(), $result);
$this->assertEquals($notes1->id, $result['sitenotes'][0]['id']);
$this->assertEquals($notea1->id, $result['coursenotes'][0]['id']);
$this->assertCount(1, $result['sitenotes']);
$this->assertCount(2, $result['coursenotes']);

$result = core_notes_external::get_course_notes($course1->id, 0);
$result = external_api::clean_returnvalue(core_notes_external::get_course_notes_returns(), $result);
$this->assertEquals($notes1->id, $result['sitenotes'][0]['id']);
$this->assertEquals($notea1->id, $result['coursenotes'][0]['id']);
$this->assertEquals($notea2->id, $result['coursenotes'][1]['id']);
$this->assertCount(1, $result['sitenotes']);
$this->assertCount(2, $result['coursenotes']);

$this->setUser($teacher1);
$result = core_notes_external::get_course_notes($course1->id, 0);
$result = external_api::clean_returnvalue(core_notes_external::get_course_notes_returns(), $result);
$this->assertEquals($notep1->id, $result['personalnotes'][0]['id']);
$this->assertCount(1, $result['personalnotes']);

}
}
2 changes: 1 addition & 1 deletion version.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@

defined('MOODLE_INTERNAL') || die();

$version = 2015032600.00; // YYYYMMDD = weekly release date of this DEV branch.
$version = 2015032600.01; // YYYYMMDD = weekly release date of this DEV branch.
// RR = release increments - 00 in DEV branches.
// .XX = incremental changes.

Expand Down

0 comments on commit 12068d6

Please sign in to comment.