diff --git a/blocks/comments/tests/events_test.php b/blocks/comments/tests/events_test.php new file mode 100644 index 00000000000..7cb8e881a5b --- /dev/null +++ b/blocks/comments/tests/events_test.php @@ -0,0 +1,182 @@ +. + +/** + * Events tests. + * + * @package block_comments + * @category test + * @copyright 2013 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +/** + * Events tests class. + * + * @package block_comments + * @category test + * @copyright 2013 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class block_comments_events_testcase extends advanced_testcase { + /** @var stdClass Keeps course object */ + private $course; + + /** @var stdClass Keeps wiki object */ + private $wiki; + + /** + * Setup test data. + */ + public function setUp() { + $this->resetAfterTest(); + $this->setAdminUser(); + + // Create course and wiki. + $this->course = $this->getDataGenerator()->create_course(); + $this->wiki = $this->getDataGenerator()->create_module('wiki', array('course' => $this->course->id)); + } + + /** + * Test comment_created event. + */ + public function test_comment_created() { + global $CFG; + + require_once($CFG->dirroot . '/comment/lib.php'); + + // Comment on course page. + $context = context_course::instance($this->course->id); + $args = new stdClass; + $args->context = $context; + $args->course = $this->course; + $args->area = 'page_comments'; + $args->itemid = 0; + $args->component = 'block_comments'; + $args->linktext = get_string('showcomments'); + $args->notoggle = true; + $args->autostart = true; + $args->displaycancel = false; + $comment = new comment($args); + + // Triggering and capturing the event. + $sink = $this->redirectEvents(); + $comment->add('New comment'); + $events = $sink->get_events(); + $this->assertCount(1, $events); + $event = reset($events); + + // Checking that the event contains the expected values. + $this->assertInstanceOf('\block_comments\event\comment_created', $event); + $this->assertEquals($context, $event->get_context()); + $url = new moodle_url('/course/view.php', array('id' => $this->course->id)); + $this->assertEquals($url, $event->get_url()); + + // Comments when block is on module (wiki) page. + $context = context_module::instance($this->wiki->id); + $args = new stdClass; + $args->context = $context; + $args->course = $this->course; + $args->area = 'page_comments'; + $args->itemid = 0; + $args->component = 'block_comments'; + $args->linktext = get_string('showcomments'); + $args->notoggle = true; + $args->autostart = true; + $args->displaycancel = false; + $comment = new comment($args); + + // Triggering and capturing the event. + $sink = $this->redirectEvents(); + $comment->add('New comment 1'); + $events = $sink->get_events(); + $this->assertCount(1, $events); + $event = reset($events); + + // Checking that the event contains the expected values. + $this->assertInstanceOf('\block_comments\event\comment_created', $event); + $this->assertEquals($context, $event->get_context()); + $url = new moodle_url('/mod/wiki/view.php', array('id' => $this->wiki->id)); + $this->assertEquals($url, $event->get_url()); + } + + /** + * Test comment_deleted event. + */ + public function test_comment_deleted() { + global $CFG; + + require_once($CFG->dirroot . '/comment/lib.php'); + + // Comment on course page. + $context = context_course::instance($this->course->id); + $args = new stdClass; + $args->context = $context; + $args->course = $this->course; + $args->area = 'page_comments'; + $args->itemid = 0; + $args->component = 'block_comments'; + $args->linktext = get_string('showcomments'); + $args->notoggle = true; + $args->autostart = true; + $args->displaycancel = false; + $comment = new comment($args); + $newcomment = $comment->add('New comment'); + + // Triggering and capturing the event. + $sink = $this->redirectEvents(); + $comment->delete($newcomment->id); + $events = $sink->get_events(); + $this->assertCount(1, $events); + $event = reset($events); + + // Checking that the event contains the expected values. + $this->assertInstanceOf('\block_comments\event\comment_deleted', $event); + $this->assertEquals($context, $event->get_context()); + $url = new moodle_url('/course/view.php', array('id' => $this->course->id)); + $this->assertEquals($url, $event->get_url()); + + // Comments when block is on module (wiki) page. + $context = context_module::instance($this->wiki->id); + $args = new stdClass; + $args->context = $context; + $args->course = $this->course; + $args->area = 'page_comments'; + $args->itemid = 0; + $args->component = 'block_comments'; + $args->linktext = get_string('showcomments'); + $args->notoggle = true; + $args->autostart = true; + $args->displaycancel = false; + $comment = new comment($args); + $newcomment = $comment->add('New comment 1'); + + // Triggering and capturing the event. + $sink = $this->redirectEvents(); + $comment->delete($newcomment->id); + $events = $sink->get_events(); + $this->assertCount(1, $events); + $event = reset($events); + + // Checking that the event contains the expected values. + $this->assertInstanceOf('\block_comments\event\comment_deleted', $event); + $this->assertEquals($context, $event->get_context()); + $url = new moodle_url('/mod/wiki/view.php', array('id' => $this->wiki->id)); + $this->assertEquals($url, $event->get_url()); + } +} diff --git a/blog/tests/bloglib_test.php b/blog/tests/bloglib_test.php index 47c8a299163..0109fd44baa 100644 --- a/blog/tests/bloglib_test.php +++ b/blog/tests/bloglib_test.php @@ -362,7 +362,7 @@ class core_bloglib_testcase extends advanced_testcase { public function test_blog_entries_viewed_event() { $this->setAdminUser(); - $this->resetAfterTest(); + $other = array('entryid' => $this->postid, 'tagid' => $this->tagid, 'userid' => $this->userid, 'modid' => $this->cmid, 'groupid' => $this->groupid, 'courseid' => $this->courseid, 'search' => 'search', 'fromstart' => 2); @@ -382,5 +382,76 @@ class core_bloglib_testcase extends advanced_testcase { $arr = array(SITEID, 'blog', 'view', $url2->out(), 'view blog entry'); $this->assertEventLegacyLogData($arr, $event); } + + /** + * Test comment_created event. + */ + public function test_blog_comment_created_event() { + global $USER, $CFG; + + $this->setAdminUser(); + + require_once($CFG->dirroot . '/comment/lib.php'); + $context = context_user::instance($USER->id); + + $cmt = new stdClass(); + $cmt->context = $context; + $cmt->courseid = $this->courseid; + $cmt->area = 'format_blog'; + $cmt->itemid = $this->postid; + $cmt->showcount = 1; + $cmt->component = 'blog'; + $manager = new comment($cmt); + + // Triggering and capturing the event. + $sink = $this->redirectEvents(); + $manager->add("New comment"); + $events = $sink->get_events(); + $this->assertCount(1, $events); + $event = reset($events); + + // Checking that the event contains the expected values. + $this->assertInstanceOf('\core\event\blog_comment_created', $event); + $this->assertEquals($context, $event->get_context()); + $this->assertEquals($this->postid, $event->other['itemid']); + $url = new moodle_url('/blog/index.php', array('entryid' => $this->postid)); + $this->assertEquals($url, $event->get_url()); + } + + /** + * Test comment_deleted event. + */ + public function test_blog_comment_deleted_event() { + global $USER, $CFG; + + $this->setAdminUser(); + + require_once($CFG->dirroot . '/comment/lib.php'); + $context = context_user::instance($USER->id); + + $cmt = new stdClass(); + $cmt->context = $context; + $cmt->courseid = $this->courseid; + $cmt->area = 'format_blog'; + $cmt->itemid = $this->postid; + $cmt->showcount = 1; + $cmt->component = 'blog'; + $manager = new comment($cmt); + $newcomment = $manager->add("New comment"); + + // Triggering and capturing the event. + $sink = $this->redirectEvents(); + $manager->delete($newcomment->id); + $events = $sink->get_events(); + $this->assertCount(1, $events); + $event = reset($events); + + // Checking that the event contains the expected values. + $this->assertInstanceOf('\core\event\blog_comment_deleted', $event); + $this->assertEquals($context, $event->get_context()); + $this->assertEquals($this->postid, $event->other['itemid']); + $url = new moodle_url('/blog/index.php', array('entryid' => $this->postid)); + $this->assertEquals($url, $event->get_url()); + } } diff --git a/mod/assign/submission/comments/tests/events_test.php b/mod/assign/submission/comments/tests/events_test.php new file mode 100644 index 00000000000..035760640ee --- /dev/null +++ b/mod/assign/submission/comments/tests/events_test.php @@ -0,0 +1,116 @@ +. + +/** + * Events tests. + * + * @package assignsubmission_comments + * @category test + * @copyright 2013 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; +require_once($CFG->dirroot . '/mod/assign/lib.php'); +require_once($CFG->dirroot . '/mod/assign/locallib.php'); +require_once($CFG->dirroot . '/mod/assign/tests/base_test.php'); + +/** + * Events tests class. + * + * @package assignsubmission_comments + * @category test + * @copyright 2013 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class assignsubmission_comments_events_testcase extends mod_assign_base_testcase { + + /** + * Test comment_created event. + */ + public function test_comment_created() { + global $CFG; + require_once($CFG->dirroot . '/comment/lib.php'); + + $this->setUser($this->editingteachers[0]); + $assign = $this->create_instance(); + $submission = $assign->get_user_submission($this->students[0]->id, true); + + $context = $assign->get_context(); + $options = new stdClass(); + $options->area = 'submission_comments'; + $options->course = $assign->get_course(); + $options->context = $context; + $options->itemid = $submission->id; + $options->component = 'assignsubmission_comments'; + $options->showcount = true; + $options->displaycancel = true; + + $comment = new comment($options); + + // Triggering and capturing the event. + $sink = $this->redirectEvents(); + $comment->add('New comment'); + $events = $sink->get_events(); + $this->assertCount(1, $events); + $event = reset($events); + + // Checking that the event contains the expected values. + $this->assertInstanceOf('\assignsubmission_comments\event\comment_created', $event); + $this->assertEquals($context, $event->get_context()); + $url = new moodle_url('/mod/assign/view.php', array('id' => $submission->id)); + $this->assertEquals($url, $event->get_url()); + } + + /** + * Test comment_deleted event. + */ + public function test_comment_deleted() { + global $CFG; + require_once($CFG->dirroot . '/comment/lib.php'); + + $this->setUser($this->editingteachers[0]); + $assign = $this->create_instance(); + $submission = $assign->get_user_submission($this->students[0]->id, true); + + $context = $assign->get_context(); + $options = new stdClass(); + $options->area = 'submission_comments'; + $options->course = $assign->get_course(); + $options->context = $context; + $options->itemid = $submission->id; + $options->component = 'assignsubmission_comments'; + $options->showcount = true; + $options->displaycancel = true; + $comment = new comment($options); + $newcomment = $comment->add('New comment 1'); + + // Triggering and capturing the event. + $sink = $this->redirectEvents(); + $comment->delete($newcomment->id); + $events = $sink->get_events(); + $this->assertCount(1, $events); + $event = reset($events); + + // Checking that the event contains the expected values. + $this->assertInstanceOf('\assignsubmission_comments\event\comment_deleted', $event); + $this->assertEquals($context, $event->get_context()); + $url = new moodle_url('/mod/assign/view.php', array('id' => $submission->id)); + $this->assertEquals($url, $event->get_url()); + } +} diff --git a/mod/data/tests/lib_test.php b/mod/data/tests/lib_test.php index 6941825a5e5..1a42142906d 100644 --- a/mod/data/tests/lib_test.php +++ b/mod/data/tests/lib_test.php @@ -104,4 +104,129 @@ class data_lib_testcase extends advanced_testcase { // Make sure the function returns true on a successful deletion. $this->assertTrue($result); } -} \ No newline at end of file + + /** + * Test comment_created event. + */ + public function test_data_comment_created_event() { + global $CFG, $DB; + require_once($CFG->dirroot . '/comment/lib.php'); + + $this->resetAfterTest(); + + // Create a record for deleting. + $this->setAdminUser(); + $course = $this->getDataGenerator()->create_course(); + $record = new stdClass(); + $record->course = $course->id; + $record->name = "Mod data delete test"; + $record->intro = "Some intro of some sort"; + $record->comments = 1; + + $module = $this->getDataGenerator()->create_module('data', $record); + $field = data_get_field_new('text', $module); + + $fielddetail = new stdClass(); + $fielddetail->name = 'Name'; + $fielddetail->description = 'Some name'; + + $field->define_field($fielddetail); + $field->insert_field(); + $recordid = data_add_record($module); + + $datacontent = array(); + $datacontent['fieldid'] = $field->field->id; + $datacontent['recordid'] = $recordid; + $datacontent['content'] = 'Asterix'; + + $contentid = $DB->insert_record('data_content', $datacontent); + $cm = get_coursemodule_from_instance('data', $module->id, $course->id); + + $context = context_module::instance($module->id); + $cmt = new stdClass(); + $cmt->context = $context; + $cmt->course = $course; + $cmt->cm = $cm; + $cmt->area = 'database_entry'; + $cmt->itemid = $contentid; + $cmt->showcount = true; + $cmt->component = 'mod_data'; + $comment = new comment($cmt); + + // Triggering and capturing the event. + $sink = $this->redirectEvents(); + $comment->add('New comment'); + $events = $sink->get_events(); + $this->assertCount(1, $events); + $event = reset($events); + + // Checking that the event contains the expected values. + $this->assertInstanceOf('\mod_data\event\comment_created', $event); + $this->assertEquals($context, $event->get_context()); + $url = new moodle_url('/mod/data/view.php', array('id' => $module->id)); + $this->assertEquals($url, $event->get_url()); + } + + /** + * Test comment_deleted event. + */ + public function test_data_comment_deleted_event() { + global $CFG, $DB; + require_once($CFG->dirroot . '/comment/lib.php'); + + $this->resetAfterTest(); + + // Create a record for deleting. + $this->setAdminUser(); + $course = $this->getDataGenerator()->create_course(); + $record = new stdClass(); + $record->course = $course->id; + $record->name = "Mod data delete test"; + $record->intro = "Some intro of some sort"; + $record->comments = 1; + + $module = $this->getDataGenerator()->create_module('data', $record); + $field = data_get_field_new('text', $module); + + $fielddetail = new stdClass(); + $fielddetail->name = 'Name'; + $fielddetail->description = 'Some name'; + + $field->define_field($fielddetail); + $field->insert_field(); + $recordid = data_add_record($module); + + $datacontent = array(); + $datacontent['fieldid'] = $field->field->id; + $datacontent['recordid'] = $recordid; + $datacontent['content'] = 'Asterix'; + + $contentid = $DB->insert_record('data_content', $datacontent); + $cm = get_coursemodule_from_instance('data', $module->id, $course->id); + + $context = context_module::instance($module->id); + $cmt = new stdClass(); + $cmt->context = $context; + $cmt->course = $course; + $cmt->cm = $cm; + $cmt->area = 'database_entry'; + $cmt->itemid = $contentid; + $cmt->showcount = true; + $cmt->component = 'mod_data'; + $comment = new comment($cmt); + $newcomment = $comment->add('New comment 1'); + + // Triggering and capturing the event. + $sink = $this->redirectEvents(); + $comment->delete($newcomment->id); + $events = $sink->get_events(); + $this->assertCount(1, $events); + $event = reset($events); + + // Checking that the event contains the expected values. + $this->assertInstanceOf('\mod_data\event\comment_deleted', $event); + $this->assertEquals($context, $event->get_context()); + $url = new moodle_url('/mod/data/view.php', array('id' => $module->id)); + $this->assertEquals($url, $event->get_url()); + } +} diff --git a/mod/glossary/tests/events_test.php b/mod/glossary/tests/events_test.php new file mode 100644 index 00000000000..f7f2a73f424 --- /dev/null +++ b/mod/glossary/tests/events_test.php @@ -0,0 +1,124 @@ +. + +/** + * Unit tests for lib.php + * + * @package mod_glossary + * @category test + * @copyright 2013 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +/** + * Unit tests for glossary events. + * + * @package mod_glossary + * @category test + * @copyright 2013 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class glossary_event_testcase extends advanced_testcase { + + /** + * Test comment_created event. + */ + public function test_comment_created() { + global $CFG, $DB; + require_once($CFG->dirroot . '/comment/lib.php'); + + $this->resetAfterTest(); + + // Create a record for adding comment. + $this->setAdminUser(); + $course = $this->getDataGenerator()->create_course(); + $glossary = $this->getDataGenerator()->create_module('glossary', array('course' => $course)); + $glossarygenerator = $this->getDataGenerator()->get_plugin_generator('mod_glossary'); + + $entry = $glossarygenerator->create_content($glossary); + + $context = context_module::instance($glossary->id); + $cm = get_coursemodule_from_instance('data', $glossary->id, $course->id); + $cmt = new stdClass(); + $cmt->component = 'mod_glossary'; + $cmt->context = $context; + $cmt->course = $course; + $cmt->cm = $cm; + $cmt->area = 'glossary_entry'; + $cmt->itemid = $entry->id; + $cmt->showcount = true; + $comment = new comment($cmt); + + // Triggering and capturing the event. + $sink = $this->redirectEvents(); + $comment->add('New comment'); + $events = $sink->get_events(); + $this->assertCount(1, $events); + $event = reset($events); + + // Checking that the event contains the expected values. + $this->assertInstanceOf('\mod_glossary\event\comment_created', $event); + $this->assertEquals($context, $event->get_context()); + $url = new moodle_url('/mod/glossary/view.php', array('id' => $glossary->id)); + $this->assertEquals($url, $event->get_url()); + } + + /** + * Test comment_deleted event. + */ + public function test_comment_deleted() { + global $CFG, $DB; + require_once($CFG->dirroot . '/comment/lib.php'); + + $this->resetAfterTest(); + + // Create a record for deleting comment. + $this->setAdminUser(); + $course = $this->getDataGenerator()->create_course(); + $glossary = $this->getDataGenerator()->create_module('glossary', array('course' => $course)); + $glossarygenerator = $this->getDataGenerator()->get_plugin_generator('mod_glossary'); + + $entry = $glossarygenerator->create_content($glossary); + + $context = context_module::instance($glossary->id); + $cm = get_coursemodule_from_instance('data', $glossary->id, $course->id); + $cmt = new stdClass(); + $cmt->component = 'mod_glossary'; + $cmt->context = $context; + $cmt->course = $course; + $cmt->cm = $cm; + $cmt->area = 'glossary_entry'; + $cmt->itemid = $entry->id; + $cmt->showcount = true; + $comment = new comment($cmt); + $newcomment = $comment->add('New comment 1'); + + // Triggering and capturing the event. + $sink = $this->redirectEvents(); + $comment->delete($newcomment->id); + $events = $sink->get_events(); + $this->assertCount(1, $events); + $event = reset($events); + + // Checking that the event contains the expected values. + $this->assertInstanceOf('\mod_glossary\event\comment_deleted', $event); + $this->assertEquals($context, $event->get_context()); + $url = new moodle_url('/mod/glossary/view.php', array('id' => $glossary->id)); + $this->assertEquals($url, $event->get_url()); + } +}