You are here

function CourseObjectFulfillmentTest::testCourseContentObjectFulfillment in Course 3.x

Test fulfillment of CourseObjects with an enrolled/unenrolled user

File

tests/src/Functional/CourseObjectFulfillmentTest.php, line 17

Class

CourseObjectFulfillmentTest
Tests Course object fulfillment

Namespace

Drupal\Tests\course\Functional

Code

function testCourseContentObjectFulfillment() {

  // Add the course object to the course.
  $course = $this
    ->createCourse();
  $co1 = CourseObject::create([
    'object_type' => 'course_test_object',
  ]);
  $co1
    ->setCourse($course);
  $co1
    ->save();

  // Satisfy the object outside of the course.
  $co1
    ->getFulfillment($this->student_user)
    ->setComplete(TRUE)
    ->save();
  $this
    ->assertFalse($co1
    ->getFulfillment($this->student_user)
    ->isComplete(), 'Check that the object is not fulfilled.');

  // Enroll the user in the course.
  $course
    ->enroll($this->student_user);

  // Satisfy the object inside of the course.
  $co1
    ->getFulfillment($this->student_user)
    ->setOption('test_value', 'findMe123')
    ->setComplete(TRUE)
    ->save();
  $co1
    ->getFulfillment($this->student_user)
    ->setOption('test_value_undef', 'findMe123')
    ->setComplete(TRUE)
    ->save();
  $this
    ->assertEqual($co1
    ->getFulfillment($this->student_user)
    ->getOption('test_value'), 'findMe123', 'Check that defined fulfillment data was saved.');
  $this
    ->assertNotEqual($co1
    ->getFulfillment($this->student_user)
    ->getOption('test_value_undef'), 'findMe123', 'Check that undefined fulfillment data was not saved.');
  $this
    ->assertTrue($co1
    ->getFulfillment($this->student_user)
    ->isComplete(), 'Check that the object is fulfilled.');
}