function CourseAccessTest::testReleaseExpiration in Course 3.x
Test the open/close date functionality.
File
- tests/
src/ Functional/ CourseAccessTest.php, line 39
Class
- CourseAccessTest
- 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', DateTimeItemInterface::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', DateTimeItemInterface::DATETIME_STORAGE_FORMAT),
'end_value' => $formatter
->format($now - 30, 'custom', DateTimeItemInterface::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.');
}