コード例 #1
0
 /**
  * Testing function course_get_tagged_course_modules - search tagged course modules
  */
 public function test_course_get_tagged_course_modules()
 {
     global $DB;
     $this->resetAfterTest();
     $course3 = $this->getDataGenerator()->create_course();
     $course2 = $this->getDataGenerator()->create_course();
     $course1 = $this->getDataGenerator()->create_course();
     $cm11 = $this->getDataGenerator()->create_module('assign', array('course' => $course1->id, 'tags' => 'Cat, Dog'));
     $cm12 = $this->getDataGenerator()->create_module('page', array('course' => $course1->id, 'tags' => 'Cat, Mouse', 'visible' => 0));
     $cm13 = $this->getDataGenerator()->create_module('page', array('course' => $course1->id, 'tags' => 'Cat, Mouse, Dog'));
     $cm21 = $this->getDataGenerator()->create_module('forum', array('course' => $course2->id, 'tags' => 'Cat, Mouse'));
     $cm31 = $this->getDataGenerator()->create_module('forum', array('course' => $course3->id, 'tags' => 'Cat, Mouse'));
     // Admin is able to view everything.
     $this->setAdminUser();
     $res = course_get_tagged_course_modules(core_tag_tag::get_by_name(0, 'Cat'), false, 0, 0, 1, 0);
     $this->assertRegExp('/' . $cm11->name . '/', $res->content);
     $this->assertRegExp('/' . $cm12->name . '/', $res->content);
     $this->assertRegExp('/' . $cm13->name . '/', $res->content);
     $this->assertRegExp('/' . $cm21->name . '/', $res->content);
     $this->assertRegExp('/' . $cm31->name . '/', $res->content);
     // Results from course1 are returned before results from course2.
     $this->assertTrue(strpos($res->content, $cm11->name) < strpos($res->content, $cm21->name));
     // Ordinary user is not able to see anything.
     $user = $this->getDataGenerator()->create_user();
     $this->setUser($user);
     $res = course_get_tagged_course_modules(core_tag_tag::get_by_name(0, 'Cat'), false, 0, 0, 1, 0);
     $this->assertNull($res);
     // Enrol user as student in course1 and course2.
     $roleids = $DB->get_records_menu('role', null, '', 'shortname, id');
     $this->getDataGenerator()->enrol_user($user->id, $course1->id, $roleids['student']);
     $this->getDataGenerator()->enrol_user($user->id, $course2->id, $roleids['student']);
     core_tag_index_builder::reset_caches();
     // Searching in the course context returns visible modules in this course.
     $context = context_course::instance($course1->id);
     $res = course_get_tagged_course_modules(core_tag_tag::get_by_name(0, 'Cat'), false, 0, $context->id, 1, 0);
     $this->assertRegExp('/' . $cm11->name . '/', $res->content);
     $this->assertNotRegExp('/' . $cm12->name . '/', $res->content);
     $this->assertRegExp('/' . $cm13->name . '/', $res->content);
     $this->assertNotRegExp('/' . $cm21->name . '/', $res->content);
     $this->assertNotRegExp('/' . $cm31->name . '/', $res->content);
     // Searching FROM the course context returns visible modules in all courses.
     $context = context_course::instance($course2->id);
     $res = course_get_tagged_course_modules(core_tag_tag::get_by_name(0, 'Cat'), false, $context->id, 0, 1, 0);
     $this->assertRegExp('/' . $cm11->name . '/', $res->content);
     $this->assertNotRegExp('/' . $cm12->name . '/', $res->content);
     $this->assertRegExp('/' . $cm13->name . '/', $res->content);
     $this->assertRegExp('/' . $cm21->name . '/', $res->content);
     $this->assertNotRegExp('/' . $cm31->name . '/', $res->content);
     // No access to course3.
     // Results from course2 are returned before results from course1.
     $this->assertTrue(strpos($res->content, $cm21->name) < strpos($res->content, $cm11->name));
     // Enrol user in course1 as a teacher - now he should be able to see hidden module.
     $this->getDataGenerator()->enrol_user($user->id, $course1->id, $roleids['editingteacher']);
     get_fast_modinfo(0, 0, true);
     $context = context_course::instance($course1->id);
     $res = course_get_tagged_course_modules(core_tag_tag::get_by_name(0, 'Cat'), false, $context->id, 0, 1, 0);
     $this->assertRegExp('/' . $cm12->name . '/', $res->content);
     // Create more modules and try pagination.
     $cm14 = $this->getDataGenerator()->create_module('assign', array('course' => $course1->id, 'tags' => 'Cat, Dog'));
     $cm15 = $this->getDataGenerator()->create_module('page', array('course' => $course1->id, 'tags' => 'Cat, Mouse', 'visible' => 0));
     $cm16 = $this->getDataGenerator()->create_module('page', array('course' => $course1->id, 'tags' => 'Cat, Mouse, Dog'));
     $context = context_course::instance($course1->id);
     $res = course_get_tagged_course_modules(core_tag_tag::get_by_name(0, 'Cat'), false, 0, $context->id, 1, 0);
     $this->assertRegExp('/' . $cm11->name . '/', $res->content);
     $this->assertRegExp('/' . $cm12->name . '/', $res->content);
     $this->assertRegExp('/' . $cm13->name . '/', $res->content);
     $this->assertNotRegExp('/' . $cm21->name . '/', $res->content);
     $this->assertRegExp('/' . $cm14->name . '/', $res->content);
     $this->assertRegExp('/' . $cm15->name . '/', $res->content);
     $this->assertNotRegExp('/' . $cm16->name . '/', $res->content);
     $this->assertNotRegExp('/' . $cm31->name . '/', $res->content);
     // No access to course3.
     $this->assertEmpty($res->prevpageurl);
     $this->assertNotEmpty($res->nextpageurl);
     $res = course_get_tagged_course_modules(core_tag_tag::get_by_name(0, 'Cat'), false, 0, $context->id, 1, 1);
     $this->assertNotRegExp('/' . $cm11->name . '/', $res->content);
     $this->assertNotRegExp('/' . $cm12->name . '/', $res->content);
     $this->assertNotRegExp('/' . $cm13->name . '/', $res->content);
     $this->assertNotRegExp('/' . $cm21->name . '/', $res->content);
     $this->assertNotRegExp('/' . $cm14->name . '/', $res->content);
     $this->assertNotRegExp('/' . $cm15->name . '/', $res->content);
     $this->assertRegExp('/' . $cm16->name . '/', $res->content);
     $this->assertNotRegExp('/' . $cm31->name . '/', $res->content);
     // No access to course3.
     $this->assertNotEmpty($res->prevpageurl);
     $this->assertEmpty($res->nextpageurl);
 }
コード例 #2
0
ファイル: lib_test.php プロジェクト: evltuma/moodle
 public function test_mod_wiki_get_tagged_pages()
 {
     global $DB;
     $this->resetAfterTest();
     $this->setAdminUser();
     // Setup test data.
     $wikigenerator = $this->getDataGenerator()->get_plugin_generator('mod_wiki');
     $course3 = $this->getDataGenerator()->create_course();
     $course2 = $this->getDataGenerator()->create_course();
     $course1 = $this->getDataGenerator()->create_course();
     $wiki1 = $this->getDataGenerator()->create_module('wiki', array('course' => $course1->id));
     $wiki2 = $this->getDataGenerator()->create_module('wiki', array('course' => $course2->id));
     $wiki3 = $this->getDataGenerator()->create_module('wiki', array('course' => $course3->id));
     $page11 = $wikigenerator->create_content($wiki1, array('tags' => array('Cats', 'Dogs')));
     $page12 = $wikigenerator->create_content($wiki1, array('tags' => array('Cats', 'mice')));
     $page13 = $wikigenerator->create_content($wiki1, array('tags' => array('Cats')));
     $page14 = $wikigenerator->create_content($wiki1);
     $page15 = $wikigenerator->create_content($wiki1, array('tags' => array('Cats')));
     $page21 = $wikigenerator->create_content($wiki2, array('tags' => array('Cats')));
     $page22 = $wikigenerator->create_content($wiki2, array('tags' => array('Cats', 'Dogs')));
     $page23 = $wikigenerator->create_content($wiki2, array('tags' => array('mice', 'Cats')));
     $page31 = $wikigenerator->create_content($wiki3, array('tags' => array('mice', 'Cats')));
     $tag = core_tag_tag::get_by_name(0, 'Cats');
     // Admin can see everything.
     $res = mod_wiki_get_tagged_pages($tag, false, 0, 0, 1, 0);
     $this->assertRegExp('/' . $page11->title . '/', $res->content);
     $this->assertRegExp('/' . $page12->title . '/', $res->content);
     $this->assertRegExp('/' . $page13->title . '/', $res->content);
     $this->assertNotRegExp('/' . $page14->title . '/', $res->content);
     $this->assertRegExp('/' . $page15->title . '/', $res->content);
     $this->assertRegExp('/' . $page21->title . '/', $res->content);
     $this->assertNotRegExp('/' . $page22->title . '/', $res->content);
     $this->assertNotRegExp('/' . $page23->title . '/', $res->content);
     $this->assertNotRegExp('/' . $page31->title . '/', $res->content);
     $this->assertEmpty($res->prevpageurl);
     $this->assertNotEmpty($res->nextpageurl);
     $res = mod_wiki_get_tagged_pages($tag, false, 0, 0, 1, 1);
     $this->assertNotRegExp('/' . $page11->title . '/', $res->content);
     $this->assertNotRegExp('/' . $page12->title . '/', $res->content);
     $this->assertNotRegExp('/' . $page13->title . '/', $res->content);
     $this->assertNotRegExp('/' . $page14->title . '/', $res->content);
     $this->assertNotRegExp('/' . $page15->title . '/', $res->content);
     $this->assertNotRegExp('/' . $page21->title . '/', $res->content);
     $this->assertRegExp('/' . $page22->title . '/', $res->content);
     $this->assertRegExp('/' . $page23->title . '/', $res->content);
     $this->assertRegExp('/' . $page31->title . '/', $res->content);
     $this->assertNotEmpty($res->prevpageurl);
     $this->assertEmpty($res->nextpageurl);
     // Create and enrol a user.
     $student = self::getDataGenerator()->create_user();
     $studentrole = $DB->get_record('role', array('shortname' => 'student'));
     $this->getDataGenerator()->enrol_user($student->id, $course1->id, $studentrole->id, 'manual');
     $this->getDataGenerator()->enrol_user($student->id, $course2->id, $studentrole->id, 'manual');
     $this->setUser($student);
     core_tag_index_builder::reset_caches();
     // User can not see pages in course 3 because he is not enrolled.
     $res = mod_wiki_get_tagged_pages($tag, false, 0, 0, 1, 1);
     $this->assertRegExp('/' . $page22->title . '/', $res->content);
     $this->assertRegExp('/' . $page23->title . '/', $res->content);
     $this->assertNotRegExp('/' . $page31->title . '/', $res->content);
     // User can search wiki pages inside a course.
     $coursecontext = context_course::instance($course1->id);
     $res = mod_wiki_get_tagged_pages($tag, false, 0, $coursecontext->id, 1, 0);
     $this->assertRegExp('/' . $page11->title . '/', $res->content);
     $this->assertRegExp('/' . $page12->title . '/', $res->content);
     $this->assertRegExp('/' . $page13->title . '/', $res->content);
     $this->assertNotRegExp('/' . $page14->title . '/', $res->content);
     $this->assertRegExp('/' . $page15->title . '/', $res->content);
     $this->assertNotRegExp('/' . $page21->title . '/', $res->content);
     $this->assertNotRegExp('/' . $page22->title . '/', $res->content);
     $this->assertNotRegExp('/' . $page23->title . '/', $res->content);
     $this->assertEmpty($res->nextpageurl);
 }