[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/mod/data/tests/ -> lib_test.php (source)

   1  <?php
   2  // This file is part of Moodle - http://moodle.org/
   3  //
   4  // Moodle is free software: you can redistribute it and/or modify
   5  // it under the terms of the GNU General Public License as published by
   6  // the Free Software Foundation, either version 3 of the License, or
   7  // (at your option) any later version.
   8  //
   9  // Moodle is distributed in the hope that it will be useful,
  10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  // GNU General Public License for more details.
  13  //
  14  // You should have received a copy of the GNU General Public License
  15  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  16  
  17  /**
  18   * Unit tests for lib.php
  19   *
  20   * @package    mod_data
  21   * @category   phpunit
  22   * @copyright  2013 Adrian Greeve
  23   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  24   */
  25  
  26  defined('MOODLE_INTERNAL') || die();
  27  
  28  global $CFG;
  29  require_once($CFG->dirroot . '/mod/data/lib.php');
  30  
  31  /**
  32   * Unit tests for lib.php
  33   *
  34   * @package    mod_data
  35   * @copyright  2013 Adrian Greeve
  36   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  37   */
  38  class mod_data_lib_testcase extends advanced_testcase {
  39  
  40      public function test_data_delete_record() {
  41          global $DB;
  42  
  43          $this->resetAfterTest();
  44  
  45          // Create a record for deleting.
  46          $this->setAdminUser();
  47          $course = $this->getDataGenerator()->create_course();
  48          $record = new stdClass();
  49          $record->course = $course->id;
  50          $record->name = "Mod data delete test";
  51          $record->intro = "Some intro of some sort";
  52  
  53          $module = $this->getDataGenerator()->create_module('data', $record);
  54  
  55          $field = data_get_field_new('text', $module);
  56  
  57          $fielddetail = new stdClass();
  58          $fielddetail->d = $module->id;
  59          $fielddetail->mode = 'add';
  60          $fielddetail->type = 'text';
  61          $fielddetail->sesskey = sesskey();
  62          $fielddetail->name = 'Name';
  63          $fielddetail->description = 'Some name';
  64  
  65          $field->define_field($fielddetail);
  66          $field->insert_field();
  67          $recordid = data_add_record($module);
  68  
  69          $datacontent = array();
  70          $datacontent['fieldid'] = $field->field->id;
  71          $datacontent['recordid'] = $recordid;
  72          $datacontent['content'] = 'Asterix';
  73  
  74          $contentid = $DB->insert_record('data_content', $datacontent);
  75          $cm = get_coursemodule_from_instance('data', $module->id, $course->id);
  76  
  77          // Check to make sure that we have a database record.
  78          $data = $DB->get_records('data', array('id' => $module->id));
  79          $this->assertEquals(1, count($data));
  80  
  81          $datacontent = $DB->get_records('data_content', array('id' => $contentid));
  82          $this->assertEquals(1, count($datacontent));
  83  
  84          $datafields = $DB->get_records('data_fields', array('id' => $field->field->id));
  85          $this->assertEquals(1, count($datafields));
  86  
  87          $datarecords = $DB->get_records('data_records', array('id' => $recordid));
  88          $this->assertEquals(1, count($datarecords));
  89  
  90          // Test to see if a failed delete returns false.
  91          $result = data_delete_record(8798, $module, $course->id, $cm->id);
  92          $this->assertFalse($result);
  93  
  94          // Delete the record.
  95          $result = data_delete_record($recordid, $module, $course->id, $cm->id);
  96  
  97          // Check that all of the record is gone.
  98          $datacontent = $DB->get_records('data_content', array('id' => $contentid));
  99          $this->assertEquals(0, count($datacontent));
 100  
 101          $datarecords = $DB->get_records('data_records', array('id' => $recordid));
 102          $this->assertEquals(0, count($datarecords));
 103  
 104          // Make sure the function returns true on a successful deletion.
 105          $this->assertTrue($result);
 106      }
 107  
 108      /**
 109       * Test comment_created event.
 110       */
 111      public function test_data_comment_created_event() {
 112          global $CFG, $DB;
 113          require_once($CFG->dirroot . '/comment/lib.php');
 114  
 115          $this->resetAfterTest();
 116  
 117          // Create a record for deleting.
 118          $this->setAdminUser();
 119          $course = $this->getDataGenerator()->create_course();
 120          $record = new stdClass();
 121          $record->course = $course->id;
 122          $record->name = "Mod data delete test";
 123          $record->intro = "Some intro of some sort";
 124          $record->comments = 1;
 125  
 126          $module = $this->getDataGenerator()->create_module('data', $record);
 127          $field = data_get_field_new('text', $module);
 128  
 129          $fielddetail = new stdClass();
 130          $fielddetail->name = 'Name';
 131          $fielddetail->description = 'Some name';
 132  
 133          $field->define_field($fielddetail);
 134          $field->insert_field();
 135          $recordid = data_add_record($module);
 136  
 137          $datacontent = array();
 138          $datacontent['fieldid'] = $field->field->id;
 139          $datacontent['recordid'] = $recordid;
 140          $datacontent['content'] = 'Asterix';
 141  
 142          $contentid = $DB->insert_record('data_content', $datacontent);
 143          $cm = get_coursemodule_from_instance('data', $module->id, $course->id);
 144  
 145          $context = context_module::instance($module->cmid);
 146          $cmt = new stdClass();
 147          $cmt->context = $context;
 148          $cmt->course = $course;
 149          $cmt->cm = $cm;
 150          $cmt->area = 'database_entry';
 151          $cmt->itemid = $recordid;
 152          $cmt->showcount = true;
 153          $cmt->component = 'mod_data';
 154          $comment = new comment($cmt);
 155  
 156          // Triggering and capturing the event.
 157          $sink = $this->redirectEvents();
 158          $comment->add('New comment');
 159          $events = $sink->get_events();
 160          $this->assertCount(1, $events);
 161          $event = reset($events);
 162  
 163          // Checking that the event contains the expected values.
 164          $this->assertInstanceOf('\mod_data\event\comment_created', $event);
 165          $this->assertEquals($context, $event->get_context());
 166          $url = new moodle_url('/mod/data/view.php', array('id' => $cm->id));
 167          $this->assertEquals($url, $event->get_url());
 168          $this->assertEventContextNotUsed($event);
 169      }
 170  
 171      /**
 172       * Test comment_deleted event.
 173       */
 174      public function test_data_comment_deleted_event() {
 175          global $CFG, $DB;
 176          require_once($CFG->dirroot . '/comment/lib.php');
 177  
 178          $this->resetAfterTest();
 179  
 180          // Create a record for deleting.
 181          $this->setAdminUser();
 182          $course = $this->getDataGenerator()->create_course();
 183          $record = new stdClass();
 184          $record->course = $course->id;
 185          $record->name = "Mod data delete test";
 186          $record->intro = "Some intro of some sort";
 187          $record->comments = 1;
 188  
 189          $module = $this->getDataGenerator()->create_module('data', $record);
 190          $field = data_get_field_new('text', $module);
 191  
 192          $fielddetail = new stdClass();
 193          $fielddetail->name = 'Name';
 194          $fielddetail->description = 'Some name';
 195  
 196          $field->define_field($fielddetail);
 197          $field->insert_field();
 198          $recordid = data_add_record($module);
 199  
 200          $datacontent = array();
 201          $datacontent['fieldid'] = $field->field->id;
 202          $datacontent['recordid'] = $recordid;
 203          $datacontent['content'] = 'Asterix';
 204  
 205          $contentid = $DB->insert_record('data_content', $datacontent);
 206          $cm = get_coursemodule_from_instance('data', $module->id, $course->id);
 207  
 208          $context = context_module::instance($module->cmid);
 209          $cmt = new stdClass();
 210          $cmt->context = $context;
 211          $cmt->course = $course;
 212          $cmt->cm = $cm;
 213          $cmt->area = 'database_entry';
 214          $cmt->itemid = $recordid;
 215          $cmt->showcount = true;
 216          $cmt->component = 'mod_data';
 217          $comment = new comment($cmt);
 218          $newcomment = $comment->add('New comment 1');
 219  
 220          // Triggering and capturing the event.
 221          $sink = $this->redirectEvents();
 222          $comment->delete($newcomment->id);
 223          $events = $sink->get_events();
 224          $this->assertCount(1, $events);
 225          $event = reset($events);
 226  
 227          // Checking that the event contains the expected values.
 228          $this->assertInstanceOf('\mod_data\event\comment_deleted', $event);
 229          $this->assertEquals($context, $event->get_context());
 230          $url = new moodle_url('/mod/data/view.php', array('id' => $module->cmid));
 231          $this->assertEquals($url, $event->get_url());
 232          $this->assertEventContextNotUsed($event);
 233      }
 234  
 235      /**
 236       * Checks that data_user_can_manage_entry will return true if the user
 237       * has the mod/data:manageentries capability.
 238       */
 239      public function test_data_user_can_manage_entry_return_true_with_capability() {
 240  
 241          $this->resetAfterTest();
 242          $testdata = $this->create_user_test_data();
 243  
 244          $user = $testdata['user'];
 245          $course = $testdata['course'];
 246          $roleid = $testdata['roleid'];
 247          $context = $testdata['context'];
 248          $record = $testdata['record'];
 249          $data = new stdClass();
 250  
 251          $this->setUser($user);
 252  
 253          assign_capability('mod/data:manageentries', CAP_ALLOW, $roleid, $context);
 254  
 255          $this->assertTrue(data_user_can_manage_entry($record, $data, $context),
 256              'data_user_can_manage_entry() returns true if the user has mod/data:manageentries capability');
 257      }
 258  
 259      /**
 260       * Checks that data_user_can_manage_entry will return false if the data
 261       * is set to readonly.
 262       */
 263      public function test_data_user_can_manage_entry_return_false_readonly() {
 264  
 265          $this->resetAfterTest();
 266          $testdata = $this->create_user_test_data();
 267  
 268          $user = $testdata['user'];
 269          $course = $testdata['course'];
 270          $roleid = $testdata['roleid'];
 271          $context = $testdata['context'];
 272          $record = $testdata['record'];
 273  
 274          $this->setUser($user);
 275  
 276          // Need to make sure they don't have this capability in order to fall back to
 277          // the other checks.
 278          assign_capability('mod/data:manageentries', CAP_PROHIBIT, $roleid, $context);
 279  
 280          // Causes readonly mode to be enabled.
 281          $data = new stdClass();
 282          $now = time();
 283          // Add a small margin around the periods to prevent errors with slow tests.
 284          $data->timeviewfrom = $now - 1;
 285          $data->timeviewto = $now + 5;
 286  
 287          $this->assertFalse(data_user_can_manage_entry($record, $data, $context),
 288              'data_user_can_manage_entry() returns false if the data is read only');
 289      }
 290  
 291      /**
 292       * Checks that data_user_can_manage_entry will return false if the record
 293       * can't be found in the database.
 294       */
 295      public function test_data_user_can_manage_entry_return_false_no_record() {
 296  
 297          $this->resetAfterTest();
 298          $testdata = $this->create_user_test_data();
 299  
 300          $user = $testdata['user'];
 301          $course = $testdata['course'];
 302          $roleid = $testdata['roleid'];
 303          $context = $testdata['context'];
 304          $record = $testdata['record'];
 305          $data = new stdClass();
 306          // Causes readonly mode to be disabled.
 307          $now = time();
 308          $data->timeviewfrom = $now + 100;
 309          $data->timeviewto = $now - 100;
 310  
 311          $this->setUser($user);
 312  
 313          // Need to make sure they don't have this capability in order to fall back to
 314          // the other checks.
 315          assign_capability('mod/data:manageentries', CAP_PROHIBIT, $roleid, $context);
 316  
 317          // Pass record id instead of object to force DB lookup.
 318          $this->assertFalse(data_user_can_manage_entry(1, $data, $context),
 319              'data_user_can_manage_entry() returns false if the record cannot be found');
 320      }
 321  
 322      /**
 323       * Checks that data_user_can_manage_entry will return false if the record
 324       * isn't owned by the user.
 325       */
 326      public function test_data_user_can_manage_entry_return_false_not_owned_record() {
 327  
 328          $this->resetAfterTest();
 329          $testdata = $this->create_user_test_data();
 330  
 331          $user = $testdata['user'];
 332          $course = $testdata['course'];
 333          $roleid = $testdata['roleid'];
 334          $context = $testdata['context'];
 335          $record = $testdata['record'];
 336          $data = new stdClass();
 337          // Causes readonly mode to be disabled.
 338          $now = time();
 339          $data->timeviewfrom = $now + 100;
 340          $data->timeviewto = $now - 100;
 341          // Make sure the record isn't owned by this user.
 342          $record->userid = $user->id + 1;
 343  
 344          $this->setUser($user);
 345  
 346          // Need to make sure they don't have this capability in order to fall back to
 347          // the other checks.
 348          assign_capability('mod/data:manageentries', CAP_PROHIBIT, $roleid, $context);
 349  
 350          $this->assertFalse(data_user_can_manage_entry($record, $data, $context),
 351              'data_user_can_manage_entry() returns false if the record isnt owned by the user');
 352      }
 353  
 354      /**
 355       * Checks that data_user_can_manage_entry will return true if the data
 356       * doesn't require approval.
 357       */
 358      public function test_data_user_can_manage_entry_return_true_data_no_approval() {
 359  
 360          $this->resetAfterTest();
 361          $testdata = $this->create_user_test_data();
 362  
 363          $user = $testdata['user'];
 364          $course = $testdata['course'];
 365          $roleid = $testdata['roleid'];
 366          $context = $testdata['context'];
 367          $record = $testdata['record'];
 368          $data = new stdClass();
 369          // Causes readonly mode to be disabled.
 370          $now = time();
 371          $data->timeviewfrom = $now + 100;
 372          $data->timeviewto = $now - 100;
 373          // The record doesn't need approval.
 374          $data->approval = false;
 375          // Make sure the record is owned by this user.
 376          $record->userid = $user->id;
 377  
 378          $this->setUser($user);
 379  
 380          // Need to make sure they don't have this capability in order to fall back to
 381          // the other checks.
 382          assign_capability('mod/data:manageentries', CAP_PROHIBIT, $roleid, $context);
 383  
 384          $this->assertTrue(data_user_can_manage_entry($record, $data, $context),
 385              'data_user_can_manage_entry() returns true if the record doesnt require approval');
 386      }
 387  
 388      /**
 389       * Checks that data_user_can_manage_entry will return true if the record
 390       * isn't yet approved.
 391       */
 392      public function test_data_user_can_manage_entry_return_true_record_unapproved() {
 393  
 394          $this->resetAfterTest();
 395          $testdata = $this->create_user_test_data();
 396  
 397          $user = $testdata['user'];
 398          $course = $testdata['course'];
 399          $roleid = $testdata['roleid'];
 400          $context = $testdata['context'];
 401          $record = $testdata['record'];
 402          $data = new stdClass();
 403          // Causes readonly mode to be disabled.
 404          $now = time();
 405          $data->timeviewfrom = $now + 100;
 406          $data->timeviewto = $now - 100;
 407          // The record needs approval.
 408          $data->approval = true;
 409          // Make sure the record is owned by this user.
 410          $record->userid = $user->id;
 411          // The record hasn't yet been approved.
 412          $record->approved = false;
 413  
 414          $this->setUser($user);
 415  
 416          // Need to make sure they don't have this capability in order to fall back to
 417          // the other checks.
 418          assign_capability('mod/data:manageentries', CAP_PROHIBIT, $roleid, $context);
 419  
 420          $this->assertTrue(data_user_can_manage_entry($record, $data, $context),
 421              'data_user_can_manage_entry() returns true if the record is not yet approved');
 422      }
 423  
 424      /**
 425       * Checks that data_user_can_manage_entry will return the 'manageapproved'
 426       * value if the record has already been approved.
 427       */
 428      public function test_data_user_can_manage_entry_return_manageapproved() {
 429  
 430          $this->resetAfterTest();
 431          $testdata = $this->create_user_test_data();
 432  
 433          $user = $testdata['user'];
 434          $course = $testdata['course'];
 435          $roleid = $testdata['roleid'];
 436          $context = $testdata['context'];
 437          $record = $testdata['record'];
 438          $data = new stdClass();
 439          // Causes readonly mode to be disabled.
 440          $now = time();
 441          $data->timeviewfrom = $now + 100;
 442          $data->timeviewto = $now - 100;
 443          // The record needs approval.
 444          $data->approval = true;
 445          // Can the user managed approved records?
 446          $data->manageapproved = false;
 447          // Make sure the record is owned by this user.
 448          $record->userid = $user->id;
 449          // The record has been approved.
 450          $record->approved = true;
 451  
 452          $this->setUser($user);
 453  
 454          // Need to make sure they don't have this capability in order to fall back to
 455          // the other checks.
 456          assign_capability('mod/data:manageentries', CAP_PROHIBIT, $roleid, $context);
 457  
 458          $canmanageentry = data_user_can_manage_entry($record, $data, $context);
 459  
 460          // Make sure the result of the check is what ever the manageapproved setting
 461          // is set to.
 462          $this->assertEquals($data->manageapproved, $canmanageentry,
 463              'data_user_can_manage_entry() returns the manageapproved setting on approved records');
 464      }
 465  
 466      /**
 467       * Helper method to create a set of test data for data_user_can_manage tests
 468       *
 469       * @return array contains user, course, roleid, module, context and record
 470       */
 471      private function create_user_test_data() {
 472          $user = $this->getDataGenerator()->create_user();
 473          $course = $this->getDataGenerator()->create_course();
 474          $roleid = $this->getDataGenerator()->create_role();
 475          $record = new stdClass();
 476          $record->name = "test name";
 477          $record->intro = "test intro";
 478          $record->comments = 1;
 479          $record->course = $course->id;
 480          $record->userid = $user->id;
 481  
 482          $module = $this->getDataGenerator()->create_module('data', $record);
 483          $cm = get_coursemodule_from_instance('data', $module->id, $course->id);
 484          $context = context_module::instance($module->cmid);
 485  
 486          $this->getDataGenerator()->role_assign($roleid, $user->id, $context->id);
 487  
 488          return array(
 489              'user' => $user,
 490              'course' => $course,
 491              'roleid' => $roleid,
 492              'module' => $module,
 493              'context' => $context,
 494              'record' => $record
 495          );
 496      }
 497  
 498      /**
 499       * Tests for mod_data_rating_can_see_item_ratings().
 500       *
 501       * @throws coding_exception
 502       * @throws rating_exception
 503       */
 504      public function test_mod_data_rating_can_see_item_ratings() {
 505          global $DB;
 506  
 507          $this->resetAfterTest();
 508  
 509          // Setup test data.
 510          $course = new stdClass();
 511          $course->groupmode = SEPARATEGROUPS;
 512          $course->groupmodeforce = true;
 513          $course = $this->getDataGenerator()->create_course($course);
 514          $data = $this->getDataGenerator()->create_module('data', array('course' => $course->id));
 515          $cm = get_coursemodule_from_instance('data', $data->id);
 516          $context = context_module::instance($cm->id);
 517  
 518          // Create users.
 519          $user1 = $this->getDataGenerator()->create_user();
 520          $user2 = $this->getDataGenerator()->create_user();
 521          $user3 = $this->getDataGenerator()->create_user();
 522          $user4 = $this->getDataGenerator()->create_user();
 523  
 524          // Groups and stuff.
 525          $role = $DB->get_record('role', array('shortname' => 'teacher'), '*', MUST_EXIST);
 526          $this->getDataGenerator()->enrol_user($user1->id, $course->id, $role->id);
 527          $this->getDataGenerator()->enrol_user($user2->id, $course->id, $role->id);
 528          $this->getDataGenerator()->enrol_user($user3->id, $course->id, $role->id);
 529          $this->getDataGenerator()->enrol_user($user4->id, $course->id, $role->id);
 530  
 531          $group1 = $this->getDataGenerator()->create_group(array('courseid' => $course->id));
 532          $group2 = $this->getDataGenerator()->create_group(array('courseid' => $course->id));
 533          groups_add_member($group1, $user1);
 534          groups_add_member($group1, $user2);
 535          groups_add_member($group2, $user3);
 536          groups_add_member($group2, $user4);
 537  
 538          // Add data.
 539          $field = data_get_field_new('text', $data);
 540  
 541          $fielddetail = new stdClass();
 542          $fielddetail->name = 'Name';
 543          $fielddetail->description = 'Some name';
 544  
 545          $field->define_field($fielddetail);
 546          $field->insert_field();
 547  
 548          // Add a record with a group id of zero (all participants).
 549          $recordid1 = data_add_record($data, 0);
 550  
 551          $datacontent = array();
 552          $datacontent['fieldid'] = $field->field->id;
 553          $datacontent['recordid'] = $recordid1;
 554          $datacontent['content'] = 'Obelix';
 555          $DB->insert_record('data_content', $datacontent);
 556  
 557          $recordid = data_add_record($data, $group1->id);
 558  
 559          $datacontent = array();
 560          $datacontent['fieldid'] = $field->field->id;
 561          $datacontent['recordid'] = $recordid;
 562          $datacontent['content'] = 'Asterix';
 563          $DB->insert_record('data_content', $datacontent);
 564  
 565          // Now try to access it as various users.
 566          unassign_capability('moodle/site:accessallgroups', $role->id);
 567          // Eveyone should have access to the record with the group id of zero.
 568          $params1 = array('contextid' => 2,
 569                          'component' => 'mod_data',
 570                          'ratingarea' => 'entry',
 571                          'itemid' => $recordid1,
 572                          'scaleid' => 2);
 573  
 574          $params = array('contextid' => 2,
 575                          'component' => 'mod_data',
 576                          'ratingarea' => 'entry',
 577                          'itemid' => $recordid,
 578                          'scaleid' => 2);
 579  
 580          $this->setUser($user1);
 581          $this->assertTrue(mod_data_rating_can_see_item_ratings($params));
 582          $this->assertTrue(mod_data_rating_can_see_item_ratings($params1));
 583          $this->setUser($user2);
 584          $this->assertTrue(mod_data_rating_can_see_item_ratings($params));
 585          $this->assertTrue(mod_data_rating_can_see_item_ratings($params1));
 586          $this->setUser($user3);
 587          $this->assertFalse(mod_data_rating_can_see_item_ratings($params));
 588          $this->assertTrue(mod_data_rating_can_see_item_ratings($params1));
 589          $this->setUser($user4);
 590          $this->assertFalse(mod_data_rating_can_see_item_ratings($params));
 591          $this->assertTrue(mod_data_rating_can_see_item_ratings($params1));
 592  
 593          // Now try with accessallgroups cap and make sure everything is visible.
 594          assign_capability('moodle/site:accessallgroups', CAP_ALLOW, $role->id, $context->id);
 595          $this->setUser($user1);
 596          $this->assertTrue(mod_data_rating_can_see_item_ratings($params));
 597          $this->assertTrue(mod_data_rating_can_see_item_ratings($params1));
 598          $this->setUser($user2);
 599          $this->assertTrue(mod_data_rating_can_see_item_ratings($params));
 600          $this->assertTrue(mod_data_rating_can_see_item_ratings($params1));
 601          $this->setUser($user3);
 602          $this->assertTrue(mod_data_rating_can_see_item_ratings($params));
 603          $this->assertTrue(mod_data_rating_can_see_item_ratings($params1));
 604          $this->setUser($user4);
 605          $this->assertTrue(mod_data_rating_can_see_item_ratings($params));
 606          $this->assertTrue(mod_data_rating_can_see_item_ratings($params1));
 607  
 608          // Change group mode and verify visibility.
 609          $course->groupmode = VISIBLEGROUPS;
 610          $DB->update_record('course', $course);
 611          unassign_capability('moodle/site:accessallgroups', $role->id);
 612          $this->setUser($user1);
 613          $this->assertTrue(mod_data_rating_can_see_item_ratings($params));
 614          $this->assertTrue(mod_data_rating_can_see_item_ratings($params1));
 615          $this->setUser($user2);
 616          $this->assertTrue(mod_data_rating_can_see_item_ratings($params));
 617          $this->assertTrue(mod_data_rating_can_see_item_ratings($params1));
 618          $this->setUser($user3);
 619          $this->assertTrue(mod_data_rating_can_see_item_ratings($params));
 620          $this->assertTrue(mod_data_rating_can_see_item_ratings($params1));
 621          $this->setUser($user4);
 622          $this->assertTrue(mod_data_rating_can_see_item_ratings($params));
 623          $this->assertTrue(mod_data_rating_can_see_item_ratings($params1));
 624  
 625      }
 626  
 627      /**
 628       * Tests for mod_data_refresh_events.
 629       */
 630      public function test_data_refresh_events() {
 631          global $DB;
 632          $this->resetAfterTest();
 633          $this->setAdminUser();
 634  
 635          $timeopen = time();
 636          $timeclose = time() + 86400;
 637  
 638          $course = $this->getDataGenerator()->create_course();
 639          $generator = $this->getDataGenerator()->get_plugin_generator('mod_data');
 640          $params['course'] = $course->id;
 641          $params['timeavailablefrom'] = $timeopen;
 642          $params['timeavailableto'] = $timeclose;
 643          $data = $generator->create_instance($params);
 644  
 645          // Normal case, with existing course.
 646          $this->assertTrue(data_refresh_events($course->id));
 647          $eventparams = array('modulename' => 'data', 'instance' => $data->id, 'eventtype' => 'open');
 648          $openevent = $DB->get_record('event', $eventparams, '*', MUST_EXIST);
 649          $this->assertEquals($openevent->timestart, $timeopen);
 650  
 651          $eventparams = array('modulename' => 'data', 'instance' => $data->id, 'eventtype' => 'close');
 652          $closeevent = $DB->get_record('event', $eventparams, '*', MUST_EXIST);
 653          $this->assertEquals($closeevent->timestart, $timeclose);
 654          // In case the course ID is passed as a numeric string.
 655          $this->assertTrue(data_refresh_events('' . $course->id));
 656          // Course ID not provided.
 657          $this->assertTrue(data_refresh_events());
 658          $eventparams = array('modulename' => 'data');
 659          $events = $DB->get_records('event', $eventparams);
 660          foreach ($events as $event) {
 661              if ($event->modulename === 'data' && $event->instance === $data->id && $event->eventtype === 'open') {
 662                  $this->assertEquals($event->timestart, $timeopen);
 663              }
 664              if ($event->modulename === 'data' && $event->instance === $data->id && $event->eventtype === 'close') {
 665                  $this->assertEquals($event->timestart, $timeclose);
 666              }
 667          }
 668      }
 669  }


Generated: Thu Aug 11 10:00:09 2016 Cross-referenced by PHPXref 0.7.1