You are here

function CourseContextTestCase::testMultiContext in Course 8.3

Same name and namespace in other branches
  1. 8.2 tests/src/Functional/CourseContextTestCase.php \Drupal\Tests\course\Functional\CourseContextTestCase::testMultiContext()

Test objects that belong to multiple courses.

File

tests/src/Functional/CourseContextTestCase.php, line 34

Class

CourseContextTestCase
Tests for Course context

Namespace

Drupal\Tests\course\Functional

Code

function testMultiContext() {
  $course1 = $this
    ->createCourse();
  $course2 = $this
    ->createCourse();

  // Create an object and give it an instance.
  $co1 = $this
    ->createCourseObject($course1);
  $co1
    ->setInstanceId(1234)
    ->save();
  $co2 = $this
    ->createCourseObject($course2);
  $co2
    ->setInstanceId(1234)
    ->save();

  // Now we have 2 course objects with the same instance but in different courses.
  // Simulate us taking one of the objects, and switch back and forth between courses.
  $co1
    ->takeObject();
  $foundCourseNode1 = course_determine_context('course_test_object', 1234);
  $this
    ->assertEqual($course1
    ->id(), $foundCourseNode1
    ->id(), 'Found the right course context, pass 1.');

  // Because this is a unit test the static cache is on. We have to flush it.
  drupal_static_reset('course_determine_context');

  // Taking with context set.
  $co2
    ->takeObject();
  $foundCourseNode2 = course_determine_context('course_test_object', 1234);
  $this
    ->assertEqual($course2
    ->id(), $foundCourseNode2
    ->id(), 'Found the right course context, pass 2.');

  // Because this is a unit test the static cache is on. We have to flush it.
  drupal_static_reset('course_determine_context');

  // Back to original context.
  $co1
    ->takeObject();
  $foundCourseNode1 = course_determine_context('course_test_object', 1234);
  $this
    ->assertEqual($course1
    ->id(), $foundCourseNode1
    ->id(), 'Found the right course context, pass 3.');

  // Because this is a unit test the static cache is on. We have to flush it.
  drupal_static_reset('course_determine_context');

  // Simulate a cold context check.
  unset($_SESSION['course']);
  $foundCourseNode1 = course_determine_context('course_test_object', 1234);
  $this
    ->assertEqual($course1
    ->id(), $foundCourseNode1
    ->id(), 'Found the right course context, pass 4.');
}