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.');
}