function TwigReferenceUnitTest::testTwigReference

Test function for TwigReference class

File

drupal/core/modules/system/lib/Drupal/system/Tests/Theme/TwigReferenceUnitTest.php, line 44
Definition of Drupal\system\Tests\Theme\TwigReferenceUnitTest.

Class

TwigReferenceUnitTest
Unit tests for TwigReference class.

Namespace

Drupal\system\Tests\Theme

Code

function testTwigReference() {

  // Create a new TwigReference wrapper
  $wrapper = new TwigReference();
  $wrapper
    ->setReference($this->variables);

  // Check that strings are returned as strings
  $foo = $wrapper['foo'];
  $this
    ->assertEqual($foo, $this->variables['foo'], 'String returned from TwigReference is the same');
  $this
    ->assertTrue(is_string($foo), 'String returned from TwigReference is of type string');

  // Check that arrays are wrapped again as TwigReference objects
  $baz = $wrapper['baz'];
  $this
    ->assertTrue(is_object($baz), 'Array returned from TwigReference is of type object');
  $this
    ->assertTrue($baz instanceof TwigReference, 'Array returned from TwigReference is instance of TwigReference');

  // Check that getReference is giving back a reference to the original array
  $ref =& $baz
    ->getReference();
  $this
    ->assertTrue(is_array($ref), 'getReference returns an array');

  // Now modify $ref
  $ref['#hidden'] = TRUE;
  $this
    ->assertEqual($ref['#hidden'], $this->variables['baz']['#hidden'], 'Property set on reference is passed to original array.');
  $this
    ->assertEqual($ref['#hidden'], $baz['#hidden'], 'Property set on reference is passed to wrapper.');

  // Now modify $baz
  $baz['hi'] = 'hello';
  $this
    ->assertEqual($baz['hi'], $this->variables['baz']['hi'], 'Property set on TwigReference object is passed to original array.');
  $this
    ->assertEqual($baz['hi'], $ref['hi'], 'Property set on TwigReference object is passed to reference.');

  // Check that an object is passed through directly
  $node = $wrapper['node'];
  $this
    ->assertTrue(is_object($node), 'Object returned from TwigReference is of type object');
  $this
    ->assertTrue($node instanceof TwigReferenceObjectTest, 'Object returned from TwigReference is instance of TwigReferenceObjectTest');
}