Exemplo n.º 1
0
 /**
  * Test get_glossaries_by_courses
  */
 public function test_get_glossaries_by_courses()
 {
     $this->resetAfterTest(true);
     // As admin.
     $this->setAdminUser();
     $c1 = self::getDataGenerator()->create_course();
     $c2 = self::getDataGenerator()->create_course();
     $g1 = self::getDataGenerator()->create_module('glossary', array('course' => $c1->id, 'name' => 'First Glossary'));
     $g2 = self::getDataGenerator()->create_module('glossary', array('course' => $c1->id, 'name' => 'Second Glossary'));
     $g3 = self::getDataGenerator()->create_module('glossary', array('course' => $c2->id, 'name' => 'Third Glossary'));
     $s1 = $this->getDataGenerator()->create_user();
     self::getDataGenerator()->enrol_user($s1->id, $c1->id);
     // Check results where student is enrolled.
     $this->setUser($s1);
     $glossaries = mod_glossary_external::get_glossaries_by_courses(array());
     $glossaries = external_api::clean_returnvalue(mod_glossary_external::get_glossaries_by_courses_returns(), $glossaries);
     $this->assertCount(2, $glossaries['glossaries']);
     $this->assertEquals('First Glossary', $glossaries['glossaries'][0]['name']);
     $this->assertEquals('Second Glossary', $glossaries['glossaries'][1]['name']);
     // Check results with specific course IDs.
     $glossaries = mod_glossary_external::get_glossaries_by_courses(array($c1->id, $c2->id));
     $glossaries = external_api::clean_returnvalue(mod_glossary_external::get_glossaries_by_courses_returns(), $glossaries);
     $this->assertCount(2, $glossaries['glossaries']);
     $this->assertEquals('First Glossary', $glossaries['glossaries'][0]['name']);
     $this->assertEquals('Second Glossary', $glossaries['glossaries'][1]['name']);
     $this->assertEquals('course', $glossaries['warnings'][0]['item']);
     $this->assertEquals($c2->id, $glossaries['warnings'][0]['itemid']);
     $this->assertEquals('1', $glossaries['warnings'][0]['warningcode']);
     // Now as admin.
     $this->setAdminUser();
     $glossaries = mod_glossary_external::get_glossaries_by_courses(array($c2->id));
     $glossaries = external_api::clean_returnvalue(mod_glossary_external::get_glossaries_by_courses_returns(), $glossaries);
     $this->assertCount(1, $glossaries['glossaries']);
     $this->assertEquals('Third Glossary', $glossaries['glossaries'][0]['name']);
 }
Exemplo n.º 2
0
 public function test_get_entry_by_id()
 {
     $this->resetAfterTest(true);
     // Generate all the things.
     $gg = $this->getDataGenerator()->get_plugin_generator('mod_glossary');
     $c1 = $this->getDataGenerator()->create_course();
     $c2 = $this->getDataGenerator()->create_course();
     $g1 = $this->getDataGenerator()->create_module('glossary', array('course' => $c1->id));
     $g2 = $this->getDataGenerator()->create_module('glossary', array('course' => $c1->id, 'visible' => 0));
     $u1 = $this->getDataGenerator()->create_user();
     $u2 = $this->getDataGenerator()->create_user();
     $ctx = context_module::instance($g1->cmid);
     $this->getDataGenerator()->enrol_user($u1->id, $c1->id);
     $e1 = $gg->create_content($g1, array('approved' => 1, 'userid' => $u1->id));
     $e2 = $gg->create_content($g1, array('approved' => 0, 'userid' => $u1->id));
     $e3 = $gg->create_content($g1, array('approved' => 0, 'userid' => $u2->id));
     $e4 = $gg->create_content($g2, array('approved' => 1));
     $this->setUser($u1);
     $return = mod_glossary_external::get_entry_by_id($e1->id);
     $return = external_api::clean_returnvalue(mod_glossary_external::get_entry_by_id_returns(), $return);
     $this->assertEquals($e1->id, $return['entry']['id']);
     $return = mod_glossary_external::get_entry_by_id($e2->id);
     $return = external_api::clean_returnvalue(mod_glossary_external::get_entry_by_id_returns(), $return);
     $this->assertEquals($e2->id, $return['entry']['id']);
     try {
         $return = mod_glossary_external::get_entry_by_id($e3->id);
         $this->fail('Cannot view unapproved entries of others.');
     } catch (invalid_parameter_exception $e) {
         // All good.
     }
     try {
         $return = mod_glossary_external::get_entry_by_id($e4->id);
         $this->fail('Cannot view entries from another course.');
     } catch (require_login_exception $e) {
         // All good.
     }
     // An admin can be other's entries to be approved.
     $this->setAdminUser();
     $return = mod_glossary_external::get_entry_by_id($e3->id);
     $return = external_api::clean_returnvalue(mod_glossary_external::get_entry_by_id_returns(), $return);
     $this->assertEquals($e3->id, $return['entry']['id']);
 }
Exemplo n.º 3
0
 public function test_add_entry_with_attachments()
 {
     global $DB, $USER;
     $this->resetAfterTest(true);
     $course = $this->getDataGenerator()->create_course();
     $glossary = $this->getDataGenerator()->create_module('glossary', array('course' => $course->id));
     $context = context_module::instance($glossary->cmid);
     $this->setAdminUser();
     $concept = 'A concept';
     $definition = 'A definition';
     // Draft files.
     $draftidinlineattach = file_get_unused_draft_itemid();
     $draftidattach = file_get_unused_draft_itemid();
     $usercontext = context_user::instance($USER->id);
     $filerecordinline = array('contextid' => $usercontext->id, 'component' => 'user', 'filearea' => 'draft', 'itemid' => $draftidinlineattach, 'filepath' => '/', 'filename' => 'shouldbeanimage.txt');
     $fs = get_file_storage();
     // Create a file in a draft area for regular attachments.
     $filerecordattach = $filerecordinline;
     $attachfilename = 'attachment.txt';
     $filerecordattach['filename'] = $attachfilename;
     $filerecordattach['itemid'] = $draftidattach;
     $fs->create_file_from_string($filerecordinline, 'image contents (not really)');
     $fs->create_file_from_string($filerecordattach, 'simple text attachment');
     $options = array(array('name' => 'inlineattachmentsid', 'value' => $draftidinlineattach), array('name' => 'attachmentsid', 'value' => $draftidattach));
     $return = mod_glossary_external::add_entry($glossary->id, $concept, $definition, FORMAT_HTML, $options);
     $return = external_api::clean_returnvalue(mod_glossary_external::add_entry_returns(), $return);
     $editorfiles = external_util::get_area_files($context->id, 'mod_glossary', 'entry', $return['entryid']);
     $attachmentfiles = external_util::get_area_files($context->id, 'mod_glossary', 'attachment', $return['entryid']);
     $this->assertCount(1, $editorfiles);
     $this->assertCount(1, $attachmentfiles);
     $this->assertEquals('shouldbeanimage.txt', $editorfiles[0]['filename']);
     $this->assertEquals('attachment.txt', $attachmentfiles[0]['filename']);
 }