function CourseAccessTestCase::testReleaseExpiration in Course 8.2
Same name and namespace in other branches
- 8.3 tests/src/Functional/CourseAccessTestCase.php \Drupal\Tests\course\Functional\CourseAccessTestCase::testReleaseExpiration()
 
Test the open/close date functionality.
File
- tests/
src/ Functional/ CourseAccessTestCase.php, line 38  
Class
- CourseAccessTestCase
 - Tests for conditional event-based access to course objects.
 
Namespace
Drupal\Tests\course\FunctionalCode
function testReleaseExpiration() {
  $course = $this
    ->createCourse();
  $now = \Drupal::time()
    ->getRequestTime();
  $formatter = \Drupal::service('date.formatter');
  // Make sure user can get in with no open/close set.
  $this
    ->assertTrue($course
    ->access('enroll', $this->student_user), 'User can enroll in course past start date.');
  // Test a course that is not yet open.
  $course
    ->set('course_date', [
    'value' => $formatter
      ->format($now + 30, 'custom', DATETIME_DATETIME_STORAGE_FORMAT),
  ]);
  $course
    ->save();
  \Drupal::entityTypeManager()
    ->getAccessControlHandler('course')
    ->resetCache();
  $this
    ->assertFalse($course
    ->access('enroll', $this->student_user), 'User cannot enroll in not yet open course.');
  // Test an opened course that is closed.
  $course
    ->set('course_date', [
    'value' => $formatter
      ->format($now - 60, 'custom', DATETIME_DATETIME_STORAGE_FORMAT),
    'end_value' => $formatter
      ->format($now - 30, 'custom', DATETIME_DATETIME_STORAGE_FORMAT),
  ]);
  $course
    ->save();
  \Drupal::entityTypeManager()
    ->getAccessControlHandler('course')
    ->resetCache();
  $this
    ->assertFalse($course
    ->access('enroll', $this->student_user), 'User cannot enroll in expired course.');
  // Enroll the user. User should still not be able to take course if it is
  // expired.
  $course
    ->enroll($this->student_user);
  \Drupal::entityTypeManager()
    ->getAccessControlHandler('course')
    ->resetCache();
  $this
    ->assertFalse($course
    ->access('enroll', $this->student_user), 'User cannot take expired course.');
}